python - 在 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。我该如何解决这个问题?
解决方案
经过大量搜索后,我发现默认情况下 Windows 使用 ANGLE,这是一个在 Direct 3D 之上实现 OpenGL ES 的库。
因此,为了强制应用程序使用 OpenGL 而不是 ANGLE,我添加了
QCoreApplication.setAttribute(Qt.AA_UseDesktopOpenGL)
另外,我使用了 Unofficial Windows PyOpenGL Binaries。
我从以下 2 个来源获得了解决方案:
推荐阅读
- delphi - 如何将 Delphi Form 继承与环境路径一起使用
- webpack - webpack v5 devtool 应该匹配模式
- c# - 使用带有 inMemoryDb 的 DB 上下文的 POST 方法的 C# 单元测试
- scala - scala中相邻项目的平均值
- javascript - 在 Jest 测试中使用工作箱
- vagrant - 使用 resize2fs 在 Vagrant archlinux 中增加磁盘大小
- c++ - 不能在 intel sgx enclave 中多次运行 sha256
- c - 如何在 C 中解析 char 缓冲区?
- ruby-on-rails - Rails Delete 不会破坏记录,只是刷新
- go - 如何将字体文本更改为 SVG 路径