0

GL_INVALID_OPERATION打电话时出错,我glGenTextures不知道是什么原因造成的。

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

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

所以我的问题是:

  • glGenTextures()除了根本没有 OpenGL 上下文之外,常见的错误情况是什么
  • OpenGL上下文是否无效或混乱,在这种情况下
  • 如何检查我的 OpenGL 上下文是否有效?

编辑:因为我坚信这与我的机器没有合适的 GPU 的事实有关,所以这里是 glxinfo 的返回

4

2 回答 2

2

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

尝试使用 本地化您的违规呼叫glGetError()

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

于 2016-10-20T14:48:18.763 回答
0

好的,发现问题。似乎着色器没有正确编译(硬编码着色器未检查正确编译,#version 不正确),这弄乱了下一个 OpenGL 错误检查,即glGenTextures().

于 2016-10-20T14:48:40.373 回答