제목이 실제로 말한대로. PyOpenGL에서 수직 동기화를 켜고 싶습니다만 어떻게 할 수 있습니까? 상당히 철저한 웹 검색으로 아무 것도 나오지 않았지만 어쩌면 누군가가 영리한 해결책을 가지고 있을까요? 나는 OS X에 있고 어떤 패키지가 윈도우와 어플리케이션 루프를 만드는데 사용되는지는 신경 쓰지 않는다. 그러나, 차라리 아래에 설명 된 이유 때문에 본격적인 코코아 응용 프로그램을 개발하는 것을 멀리 할 것입니다.PyOpengl에서 vsync를 활성화하는 방법은 무엇입니까?
PyOpenGL보다는 pyglet을 사용했지만 64 비트 OS에서 실행되는 pyglet의 유일한 버전은 거의 1 년이 지난 알파 릴리스이므로 두려워서 사용하지 않으려합니다. 포기할 수 있습니다. 실제로 PyOpenGL보다 훨씬 좋았 기 때문에 수치 스럽습니다.
this page에서 다음 코드를 발견했습니다. 페이지에 파이 게임이 있다고하지만 과 같이 보입니다.은 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"
내가 대신 파이 게임을 시도하고이 코드가 작동하는지 확인하지만이 코드뿐만 아니라 파이 게임과 충돌이 있음을 온라인으로 몇 가지 보고서를 발견, 그래서 그것을 작동하는 데 사용 뭔가 추측하지만 지금하고있어 수 하지 않습니다.
마지막으로 나는 PyObjC로 코코아 앱을 만드는 것이 효과적이라는 것을 알고 있습니다. 그러나 거기에 꽤 큰 학습 곡선이 있으며, 나는 심지어 크로스 플랫폼에 가깝지 않은 무언가로 끝날 것입니다. 이 코드는 제 개인적인 용도로만 사용됩니다. 그러나 다른 컴퓨터에서 몇 년 만에 다시 돌아 오면 다시 작동하게 될 확률을 극대화하는 데 많은 관심이 있습니다. 이러한 이유로 나는 코코아 애플리케이션을 구축하는 것이 내가 들어가기를 원하는 것이라고 생각하지 않는다.
'CGLGetCurrentContext'가 아닌 ctypes를 통해 CGL 메소드를 사용하면 세그먼트 오류가 발생하는 것으로 보입니다. – Nathaniel