使用英特尔HD 4000时出现OpenGL错误
我正在处理的代码(Python+PyOpenGL)在以下方面运行时没有问题:使用英特尔HD 4000时出现OpenGL错误,opengl,gpu,intel,pyopengl,Opengl,Gpu,Intel,Pyopengl,我正在处理的代码(Python+PyOpenGL)在以下方面运行时没有问题: GL版本:4.2.12217兼容性配置文件上下文12.104.0.0,GL渲染器:AMD Radeon HD 630M系列,GL供应商:ATI Technologies Inc GL版本:4.4.0,GL渲染器:NVS 5400M/PCIe/SSE2,GL供应商:NVIDIA Corporation 但当我尝试在集成GPU上运行代码时,它返回一个错误: GL版本:4.0.0-Build 9.17.10.2843,GL渲
File "C:\...\visualization_engine_V6.py", line 120, in initializeGL
self.geometry()
File "C:\...\visualization_engine_V6.py", line 167, in geometry
glEnable(GL_VERTEX_ARRAY)
File "errorchecker.pyx", line 50, in OpenGL_accelerate.errorchecker._ErrorChecker.glCheckError (src\errorchecker.c:854)
OpenGL.error.GLError: GLError(
err = 1280,
description = 'invalid enumerant',
baseOperation = glEnable,
cArguments = (GL_VERTEX_ARRAY,)
)
Traceback (most recent call last):
File "C:\...\visualization_engine_V6.py", line 156, in paintGL
glBindBuffer(GL_ARRAY_BUFFER, self.vbo_id)
AttributeError: 'OpenGLWidget' object has no attribute 'vbo_id'
代码:
GL\u无效\u枚举
这是否回答了您的问题?检查您在相应计算机上使用的Python版本和任何相关库。您可能知道,Python2和Python3之间可能有所不同,包括库分别遵循Python2和Python3的约定所使用的语法。@nitro2k01笔记本电脑有两个GPU;独立的NVIDIA(见列表第2条)和返回错误的集成NVIDIA,因此它运行在相同的os和Python版本上。我想我可以排除这个问题。如果我理解你的回答正确,我会说集成GPU英特尔高清4000上的OpenGL不支持这个功能?由于此函数是我的代码的基础,如何修复它?不,我是说将
GL\u VERTEX\u ARRAY
传递到glEnable
是不正确的-这正是您的错误消息所说的(GL规范证实了这一点)。只要删除这一行,它除了生成GL_INVALID_ENUM之外什么都不做。
glEnableClientState(GL_VERTEX_ARRAY)
glEnable(GL_VERTEX_ARRAY)
# generate a new VBO and get the associated vbo_id
_id = 1
self.vbo_id = glGenBuffers (_id)
# bind VBO in order to use
glBindBuffer(GL_ARRAY_BUFFER, self.vbo_id)
# upload data to VBO
vertices = model_loader.Model_loader(filename = "udarni_vzvod.stl").vertices
self.N_vertices = len(vertices)
# data size in bytes
self.dataSize = arrays.ArrayDatatype.arrayByteCount(vertices)
glBufferData(GL_ARRAY_BUFFER, self.dataSize, vertices, GL_STATIC_DRAW)
glBindBuffer(GL_ARRAY_BUFFER, self.vbo_id)
glDisableClientState(GL_VERTEX_ARRAY)
glEnable(GL_VERTEX_ARRAY)