正如标题所说的那样。我想在PyOpenGL中打开垂直同步,但是我该怎么做呢?相当详尽的网络搜索没有显示任何内容,但也许有人有一个聪明的解决方案?我在OS X上,我不介意使用哪个程序包创建窗口和应用程序循环。但是,出于以下原因,我宁愿开发一款功能完善的Cocoa应用程序。
我考虑使用pyglet而不是PyOpenGL,但是在64位OS上运行的pyglet的唯一版本是将近一年的alpha版本,所以我不想使用它,因为恐怕它可能已经废弃了。真可惜,因为它看上去比PyOpenGL好得多。
在此页面上,我找到了以下代码。该页面说它适用于pygame,但看起来也应该适用于Glut。但是,当我运行它(创建上下文之后)时,它只会导致分段错误。如果任何人都可以对发生这种情况的原因有任何见解,那将是很好的,因为我正在寻找这样的东西。
import sys
def enable_vsync():
if sys.platform != 'darwin':
return
try:
import ctypes
import ctypes.util
ogl = ctypes.cdll.LoadLibrary(ctypes.util.find_library("OpenGL"))
# set v to 1 to enable vsync, 0 to disable vsync
v = ctypes.c_int(1)
ogl.CGLSetParameter(ogl.CGLGetCurrentContext(), ctypes.c_int(222), ctypes.pointer(v))
except:
print "Unable to set vsync mode, using driver defaults"
我可以改用pygame,看看该代码是否可以运行,但是我在网上发现了一些报告,该代码也与pygame一起崩溃,所以我猜测它曾经可以工作,但现在不起作用。
最后,我知道一个可行的解决方案是使用PyObjC构建一个Cocoa应用程序。但是,那里有一个很大的学习曲线,最终我得到的东西甚至还没有跨平台的东西。这段代码仅供我个人使用,但是如果我几年后在另一台机器上重新使用它,我将最大程度地提高使其再次工作的可能性,我对此感到非常关注。出于这些原因,我真的不希望构建Cocoa应用程序。
POPMUISE
相关分类