假设我有一些代码在不同的点调用glUseProgram(programId)
,但有时最终会调用glUseProgram(1)
两次,使用相同的参数(即program1被要求两次)。
我是否应该消除对glUseProgram
的虚假来电或glUseProgram
已在内部执行该检查?
答案 0 :(得分:1)
根据OpenGL ES Programming Guide for iOS的建议,您应该防止对glEnable
状态更改进行冗余调用。因此可以假设同样适用于glUseProgram
。即使这个假设不正确,如果可能的话,通过程序和统一设置来订购您的绘图调用仍然是一个好主意。
答案 1 :(得分:0)
在我的计算机上,如果我使用具有相同ID的gluseprogram(PROGRAMID)
两次,而不在其间设置其他内容,则显示驱动程序崩溃。所以我不会。
(编辑)抱歉,这不是真的。这实际上与SFML窗口环境有关。如果设置错误,那么在OpenGL功能能够“清理房屋”之前关闭窗口(以及OpenGL环境)。