QOpenGLFunctions 和 PySide2
QOpenGLFunctions and PySide2
如何使用 PySide2
中的 QOpenGLFunctions
?
问题出在 GLEnum
,API 文档中提到了它,但没有说明可以从哪里获取它。
比如我想调用glGetString(),
我试试:
from OpenGL import GL
from PySide2.QtGui import QOpenGLFunctions as GLF
GLF.glGetString(GL.GL_VERSION))
但它会产生错误。
TypeError: descriptor 'glGetString' requires a 'PySide2.QtGui.QOpenGLFunctions' object but received a 'IntConstant'
您必须使用与当前 QOpenGLContext 关联的 QOpenGLFunctions,例如您可以使用以下代码:
from OpenGL import GL
from PySide2 import QtGui
if __name__ == "__main__":
app = QtGui.QGuiApplication()
off_screen = QtGui.QOffscreenSurface()
off_screen.create()
if off_screen.isValid():
context = QtGui.QOpenGLContext()
if context.create():
context.makeCurrent(off_screen)
f = QtGui.QOpenGLFunctions(context)
print(f.glGetString(GL.GL_VERSION))
输出:
3.0 Mesa 20.1.6
如何使用 PySide2
中的 QOpenGLFunctions
?
问题出在 GLEnum
,API 文档中提到了它,但没有说明可以从哪里获取它。
比如我想调用glGetString(),
我试试:
from OpenGL import GL
from PySide2.QtGui import QOpenGLFunctions as GLF
GLF.glGetString(GL.GL_VERSION))
但它会产生错误。
TypeError: descriptor 'glGetString' requires a 'PySide2.QtGui.QOpenGLFunctions' object but received a 'IntConstant'
您必须使用与当前 QOpenGLContext 关联的 QOpenGLFunctions,例如您可以使用以下代码:
from OpenGL import GL
from PySide2 import QtGui
if __name__ == "__main__":
app = QtGui.QGuiApplication()
off_screen = QtGui.QOffscreenSurface()
off_screen.create()
if off_screen.isValid():
context = QtGui.QOpenGLContext()
if context.create():
context.makeCurrent(off_screen)
f = QtGui.QOpenGLFunctions(context)
print(f.glGetString(GL.GL_VERSION))
输出:
3.0 Mesa 20.1.6