我想弄清楚如何使用renderdoc来调试我的一些python opengl应用程序。在这一刻,我的一些python opengl测试正在使用pyopengl(glut)或pyqt。这里是展示了如何initalize要么过剩或PyQt的一对夫妇的最小测试:如何在python opengl应用程序中使用renderdoc
GLUT
from ctypes import *
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
if __name__ == "__main__":
def display():
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
glutSwapBuffers()
glutInit(sys.argv)
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_ALPHA | GLUT_DEPTH)
glutInitWindowSize(800, 600)
glutInitWindowPosition(800, 100)
glutCreateWindow(b'TestGLUT')
glutDisplayFunc(display)
glClearColor(1.0, 0.0, 0.0, 0.0)
glutMainLoop()
如果我启动renderdoc使用可执行文件路径(蟒蛇路径)和命令上面的代码片段-Line参数(-u path_to_the_glut_example.py)我会得到这样的输出:
PyQt的
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
from PyQt5 import QtWidgets
from PyQt5.QtOpenGL import QGLWidget
class Foo(QGLWidget):
def __init__(self, *args, **kwargs):
super(Foo, self).__init__(*args, **kwargs)
def initializeGL(self):
glClearColor(1.0, 0.0, 0.0, 0.0)
def paintGL(self):
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
if __name__ == "__main__":
global app
app = QtWidgets.QApplication(sys.argv)
ex = Foo()
ex.move(800,100)
ex.resize(800, 600)
ex.show()
sys.exit(app.exec_())
如果我启动renderdoc使用可执行文件路径(蟒蛇路径)和命令行参数(-u path_to_the_pyqt_example.py)我会得到这个输出上面的代码片段:
那么,事情是我不知道如何既不glutCreateWindow(G lut)也不是初始化GL(pyqt)正在初始化幕后的opengl上下文,但看起来renderdoc并不喜欢他们创建opengl上下文的方式。我想知道如何使用glut & pyqt测试工作renderdoc。
顺便注意:
glGetIntegerv(GL_MAJOR_VERSION) ---> 4
glGetIntegerv(GL_MINOR_VERSION) ---> 5
所以,这个问题是不是上下文的OpenGL版本(这是不够好),但它已经创建的方式。