假设我有一些代码glUseProgram(programId)
在不同的点调用,但有时最终会调用glUseProgram(1)
两次,使用相同的参数(即 program1 被要求两次)。
我应该消除虚假调用glUseProgram
还是glUseProgram
已经在内部执行了该检查?
正如OpenGL ES Programming Guide for iOS中所建议的,您应该防止对glEnable
状态更改的冗余调用。因此可以假设这同样适用于glUseProgram
. 即使这个假设不正确,如果可能的话,按照程序和统一设置对绘图调用进行排序仍然是一个好主意。
在我的电脑上,如果我使用gluseprogram(PROGRAMID)
相同的 ID 两次,而没有在两者之间进行设置,则显示驱动程序会崩溃。所以我不会。
(编辑)对不起,那不是真的。这实际上与 SFML 窗口环境有关。在 OpenGL 函数能够“清理房屋”之前,设置错误,因此关闭了窗口(以及 OpenGL 环境)。