尽管有效的OpenGL上下文

时间:2016-10-20 13:47:12

标签: opengl qtopengl

调用GL_INVALID_OPERATION时出现glGenTextures错误,我不知道可能对此负责。

我正在使用QtOpenGLWidget来检索上下文,它在我调用glGenTextures()时看起来有效(至少我有一个glGetString(GL_VERSION)glxGetCurrentContext()都返回了不是垃圾的东西)

QOpenGLWidget::resizeGL()方法调用错误代码。在QOpenGLWidget::initializeGL()我成功编译了一些着色器程序,并创建/上传数据到VAO / VBO。

所以我的问题是:

  • glGenTextures()的常见错误案例有哪些,除了根本没有OpenGL上下文
  • OpenGL上下文可能无效或混乱,在这种情况下
  • 如何检查我的OpenGL上下文是否有效?

编辑:因为我坚信这与我的机器没有合适的GPU有关,here is the return of glxinfo

2 个答案:

答案 0 :(得分:2)

我不认为这是glGenTextures()来电,导致错误。此调用只能抛出GL_INVALID_ENUM和GL_INVALID_VALUE。很可能其他一些调用是错误的,新纹理的bind()是无效调用。

尝试使用glGetError()本地化您的违规通话。

您可以在此处查看有关gl调用可能失败的文档: https://www.opengl.org/sdk/docs/man4/html/glCreateTextures.xhtml

答案 1 :(得分:0)

好的发现了问题。看起来一个着色器默默地没有正确编译(硬编码着色器没有检查正确的编译,不正确的#version)并且这弄乱了下一个OpenGL错误检查glGenTextures()