【问题标题】:What happens when binding a VAO without unbinding another bound VAO?当绑定一个 VAO 而不解除绑定另一个绑定的 VAO 时会发生什么?
【发布时间】:2017-08-11 08:07:25
【问题描述】:

假设我有 2 个不同的对象,每个对象都有自己的 VAO 和绘图调用。像这样的:

void Object::Draw() {
    glBindVertexArray(vao);
    glDrawArrays(GL_TRIANGLES, foo, bar);
}

首先我调用第一个对象的绘制调用,它绑定了它的 VAO 并渲染它。然后,我对第二个对象做同样的事情。

我知道这会起作用,并且两个对象都会被渲染。我的问题是为什么。当我绑定一个 VAO 而不取消绑定任何其他以前绑定的 VAO 时,OpenGL 的状态会发生什么?

【问题讨论】:

  • 您永远不必在 OpenGL 中取消绑定任何内容(除非您不想绑定任何内容)。每个绑定方法都会覆盖当前状态。

标签: opengl vao


【解决方案1】:

覆盖。

如果绑定成功,则不会更改顶点数组对象的状态,并且任何先前的顶点数组对象绑定都会被破坏。

https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindVertexArray.xhtml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    相关资源
    最近更新 更多