在绑定一个 VAO 而不解除绑定另一个绑定的 VAO 时会发生什么?
What happens when binding a VAO without unbinding another bound VAO?
假设我有 2 个不同的对象,每个对象都有自己的 VAO 和绘图调用。像这样:
void Object::Draw() {
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, foo, bar);
}
首先,我调用了第一个对象的绘制调用,它绑定了它的 VAO 并进行了渲染。然后,我对第二个对象做同样的事情。
我知道这会起作用,并且两个对象都会被渲染。我的问题是为什么。当我绑定一个 VAO 而没有取消绑定任何其他先前绑定的 VAO 时,OpenGL 的状态会发生什么?
覆盖。
If the bind is successful no change is made to the state of the vertex array object, and any previous vertex array object binding is broken.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml
假设我有 2 个不同的对象,每个对象都有自己的 VAO 和绘图调用。像这样:
void Object::Draw() {
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, foo, bar);
}
首先,我调用了第一个对象的绘制调用,它绑定了它的 VAO 并进行了渲染。然后,我对第二个对象做同样的事情。
我知道这会起作用,并且两个对象都会被渲染。我的问题是为什么。当我绑定一个 VAO 而没有取消绑定任何其他先前绑定的 VAO 时,OpenGL 的状态会发生什么?
覆盖。
If the bind is successful no change is made to the state of the vertex array object, and any previous vertex array object binding is broken.
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml