首页 > 解决方案 > 在 Python 3.7 上运行 OpenGL 代码时出错

问题描述

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

打开glwindow.py

self.m_gl.initializeOpenGLFunctions()

AttributeError:“NoneType”对象没有属性“initializeOpenGLFunctions”

抓取器.py

文件“src/errorchecker.pyx”,第 53 行,在 OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError

OpenGL.error.GLError:GLError(

错误 = 1282,

description = b'无效操作',

baseOperation = glLightfv,

...

hellogl.py

文件“src/errorchecker.pyx”,第 53 行,在 OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError

OpenGL.error.GLError:GLError(

错误 = 1282,

description = b'无效操作',

baseOperation = glGetString,

cArguments = (GL_VENDOR,)

)

重绘.py

文件“src/errorchecker.pyx”,第 53 行,在 OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError

OpenGL.error.GLError:GLError(

错误 = 1282,

description = b'无效操作',

baseOperation = glGenLists,

cArguments = (1,),

结果 = 0

)

样本缓冲区.py

文件“src/errorchecker.pyx”,第 53 行,在 OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError

OpenGL.error.GLError:GLError(

错误 = 1282,

description = b'无效操作',

baseOperation = glMatrixMode,

cArguments = (GL_PROJECTION,)

)

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

标签: pythonpython-3.xopenglpyqt5pyopengl

解决方案


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

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

QCoreApplication.setAttribute(Qt.AA_UseDesktopOpenGL)

另外,我使用了 Unofficial Windows PyOpenGL Binaries

我从以下 2 个来源获得了解决方案:

来源 1 - RiverBank 计算

源 2 - StackOverflow


推荐阅读