运行 OpenGL 代码在 Python 3.7 上出错

Error while running OpenGL code on Python 3.7

我刚刚安装了 OpenGL 以与 Python 3.7 和 PyQt5 一起使用,安装没有任何错误。当我尝试 运行 PyQt5 为 OpenGL 给出的示例代码时,只有 1 个示例代码 运行s,所有其他的都给出了错误。以下是与每个文件相关的错误:

openglwindow.py

self.m_gl.initializeOpenGLFunctions()

AttributeError: 'NoneType' object has no attribute 'initializeOpenGLFunctions'

grabber.py

File "src/errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError

OpenGL.error.GLError: GLError(

err = 1282,

description = b'invalid operation',

baseOperation = glLightfv,

...

hellogl.py

File "src/errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError

OpenGL.error.GLError: GLError(

err = 1282,

description = b'invalid operation',

baseOperation = glGetString,

cArguments = (GL_VENDOR,)

)

overpainting.py

File "src/errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError

OpenGL.error.GLError: GLError(

err = 1282,

description = b'invalid operation',

baseOperation = glGenLists,

cArguments = (1,),

result = 0

)

samplebuffers.py

File "src/errorchecker.pyx", line 53, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError

OpenGL.error.GLError: GLError(

err = 1282,

description = b'invalid operation',

baseOperation = glMatrixMode,

cArguments = (GL_PROJECTION,)

)

我使用的是 windows 10,OpenGL 版本是 3.1。我该如何解决这个问题?

经过大量搜索,我发现默认情况下 Windows 使用 ANGLE,这是一个在 Direct 3D 之上实现 OpenGL ES 的库。

所以为了强制应用程序使用 OpenGL 而不是 ANGLE,我添加了

QCoreApplication.setAttribute(Qt.AA_UseDesktopOpenGL)

此外,我使用了Unofficial Windows PyOpenGL Binaries

我从以下两个来源得到了解决方案:

Source 1 - RiverBank Computing