【发布时间】:2017-08-11 08:07:25
【问题描述】:
假设我有 2 个不同的对象,每个对象都有自己的 VAO 和绘图调用。像这样的:
void Object::Draw() {
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, foo, bar);
}
首先我调用第一个对象的绘制调用,它绑定了它的 VAO 并渲染它。然后,我对第二个对象做同样的事情。
我知道这会起作用,并且两个对象都会被渲染。我的问题是为什么。当我绑定一个 VAO 而不取消绑定任何其他以前绑定的 VAO 时,OpenGL 的状态会发生什么?
【问题讨论】:
-
您永远不必在 OpenGL 中取消绑定任何内容(除非您不想绑定任何内容)。每个绑定方法都会覆盖当前状态。