c - glUseProgramObjectARB 无效操作错误

标签 c opengl sdl glsl

我在尝试使用 glUseProgramObjectARB 时收到“无效操作”错误,我不知道为什么。

着色器程序加载正确,我很确定。这显示在 glGetInfoLogARB 上:

  • 顶点着色器已成功编译以在硬件上运行。
  • 片段着色器已成功编译以在此硬件上运行。

在此命令之前没有以前的 openGL 错误。所以这个特定命令肯定是问题所在。

我将 glew 与 SDL 结合使用。我以前用过 GLee,遇到了同样的问题。

阅读documentation我认为这是这个错误:

GL_INVALID_OPERATION is generated if program could not be made part of current state.

但我不确定到底是什么导致了这样的事情。该命令是在工作的 openGL 上下文中发出的,因为所有以前的着色器命令都可以正常工作。它不在“开始”和“结束” block 之间。

我真的不知道这意味着什么。当命令无法发出时,也许有一些更具体的情况。如果有人知道更多,那就太好了。

编辑:

已解决:我的天哪,这太迟钝了,我在其他地方的一个函数调用中缺少返回值,因此没有传回我构建的程序。

最佳答案

如果没有看到您的代码,很难知道,但由于您明确提到了 glCompileShaderARB(两次)而不是 glLinkProgramARB 的结果,我猜您忘记了 glLinkProgramARB(在此之后,顺便说一下,您可以安全地 glDeleteObjectARB 这两个着色器对象)。

关于c - glUseProgramObjectARB 无效操作错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780970/

相关文章:

c - 这是否违反了 `restrict` 的语义?

c - c中使用逐行读取文件出错

c++ - OpenGL 两个屏幕

c++ - SDL2主要报价系统(openGL)

c - SDL 窗口未正确打开

c - SDL 视频驱动程序

c - 从文件中获取指针地址

c++ - GLSL 停止渲染

c++ - 如何将多个纹理应用于立方体的 VBO?

c - C语言中除了rand()之外还有其他随机数生成器吗?