1
我是Python和PyOpenGL的新手。試圖將我的C++代碼移植到PyOpenGL,我嘗試使用調試消息傳遞功能並定義了以下代碼。我如何在PyOpenGL中使用glDebugMessageCallback
def onDebugMessage(*args, **kwargs):
println('args = {0}, kwargs = {1}'.format(args, kwargs))
def initializeGL(self):
super().initializeGL()
glEnable(GL_DEBUG_OUTPUT)
glDebugMessageCallback(onDebugMessage, None)
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, None, GL_TRUE)
glDebugMessageInsert(GL_DEBUG_SOURCE_APPLICATION, GL_DEBUG, GL_DEBUG_TYPE_MARKER, 0, GL_DEBUG_SEVERITY_NOTIFICATION, -1, "Starting debug messaging service")
不幸的是,它在調用glDebugMessageCallback時崩潰了。
錯誤消息如下:
Traceback (most recent call last):
File "debug.py", line 12, in initializeGL
glDebugMessageCallback(onDebugMessage, None)
File "C:\Python34\lib\site-packages\OpenGL\platform\baseplatform.py", line 402, in __call__
return self(*args, **named)
ctypes.ArgumentError: argument 1: <class 'TypeError'>: expected WinFunctionType instance instead of function
這是否意味着我需要養活的原始功能和它是不可能與Python回調代碼呢?
感謝您的建議。
感謝您的解決方案。 GLDEBUGPROC包裝也爲我工作。但是,我仍然無法使其工作。看來我的問題部分是由於我無法使用PyQt 5 GLWidget獲取調試上下文而導致的。但這是另一個問題。 – ken