glUseProgramObjectARB无效的操作错误

时间:2011-04-25 17:16:55

标签: c opengl sdl glsl

尝试使用glUseProgramObjectARB时出现“无效操作”错误,我不明白为什么。

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

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

此命令之前没有先前的openGL错误。因此,使用这个特定命令肯定会出现问题。

我正在使用SDL的glew。我之前使用过GLee,并遇到了同样的问题。

阅读documentation我认为这是错误:

  

如果程序无法成为当前状态的一部分,则会生成GL_INVALID_OPERATION。

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

我真的很难过这是什么意思。当命令无法发出时,可能会有一些更具体的情况。如果有人知道任何更好的事情。

编辑:

解决了:哦,耶稣被推迟了,我在其他地方的一个函数调用中错过了返回,所以没有传回我构建的程序。

1 个答案:

答案 0 :(得分:3)

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