【发布时间】:2014-04-03 02:40:40
【问题描述】:
按照教程here 了解OpenGL 3.3 的介绍,我了解到顶点和索引缓冲区需要与glBindBuffer() 绑定才能向它们发出命令。有人提到可以通过将 0 的句柄传递给 glBindBuffer() 来取消绑定缓冲区,这似乎是一个好主意,可以防止在使用完缓冲区后意外使用不正确的缓冲区。在发出设置或绘制调用后,是否有任何理由不总是取消绑定顶点和索引缓冲区?
【问题讨论】:
-
不这样做的唯一原因可能是,如果您有一个不使用/与其他框架代码集成的线性应用程序代码,并且为了优化绘图调用,您已经确保了正确的批处理和状态变化。
-
我认为这是一个优化问题,例如:如果您有一个设置例程,其中包含一些影响缓冲区甚至可能绘制它的函数,以及一些其他例程,这些例程将始终在第一个之后调用一个,还需要对一个缓冲区执行操作,但另一个缓冲区。所以很明显,在这种情况下,使用所需的缓冲区调用
glBindBuffer()会更有效,而不是使用 0 调用它然后绑定第二个缓冲区。