2011-04-25 97 views
1

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

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

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

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

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

documentation我认为它是这个错误:

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

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

真的,我很难理解它的含义。也许有一些更具体的情况下,命令不能发布。如果有人知道更多,那就太好了。

编辑:

解决:这是弱智啊耶稣,我错过了我的功能之一返回调用其他地方,因此没有传回我已经构建的程序。

+0

我看到您的信息日志没问题,但实际编译/链接的对象/程序是否正确? (glGetObjectiv(GL_COMPILE_STATUS),glGetProgramiv(GL_LINK_STATUS))。我知道该程序的一些场景尽管生成了相同的“良好”信息日志,但未能链接。 – kvark 2011-04-25 21:23:27

回答

3

没有看到你的代码很难知道,但因为你明确提及的glCompileShaderARB(两三次),但不glLinkProgramARB结果我猜你忘了glLinkProgramARB(之后,顺便说一句,你可以安全地glDeleteObjectARB的两个着色器对象)。

+0

感谢您的回复。我确实链接了程序没有问题,不知道我可以在连接后删除着色器对象。该代码很难粘贴,因为它被封装在一些额外的对象中,但是这里简而言之就是我正在执行的操作: http://pastebin.com/w9G1KiWd – 2011-04-25 20:41:20

相关问题