运行 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
我刚刚安装了 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