我是否需要消除对`glUseProgram()`的额外调用?

时间:2012-12-03 20:19:34

标签: ios opengl-es

假设我有一些代码在不同的点调用glUseProgram(programId),但有时最终会调用glUseProgram(1)两次,使用相同的参数(即program1被要求两次)。

我是否应该消除对glUseProgram的虚假来电或glUseProgram已在内部执行该检查?

2 个答案:

答案 0 :(得分:1)

根据OpenGL ES Programming Guide for iOS的建议,您应该防止对glEnable状态更改进行冗余调用。因此可以假设同样适用于glUseProgram。即使这个假设不正确,如果可能的话,通过程序和统一设置来订购您的绘图调用仍然是一个好主意。

答案 1 :(得分:0)

在我的计算机上,如果我使用具有相同ID的gluseprogram(PROGRAMID)两次,而不在其间设置其他内容,则显示驱动程序崩溃。所以我不会。

(编辑)抱歉,这不是真的。这实际上与SFML窗口环境有关。如果设置错误,那么在OpenGL功能能够“清理房屋”之前关闭窗口(以及OpenGL环境)。