我在尝试使用 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/