使用英特尔HD 4000时出现OpenGL错误

使用英特尔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渲

我正在处理的代码(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渲染器:英特尔(R)高清图形4000,GL供应商:英特尔
  • OpenGL版本是不同的。。。有人知道是什么导致了错误,并且可以(以及如何)修复错误吗

    错误:

    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)