OpenGL是否可以同时激活两个VAO?

时间:2013-11-05 16:42:43

标签: c++ opengl vbo vao

所以我最近了解了VAO(顶点阵列对象),到目前为止它们看起来非常棒,但我有一个问题似乎无法解决。我有一堆模型,它们的顶点状态存储在单独的VAO中,所以一次调用

    glBindVertexArray(VAO);

是开始绘制此实例所需的全部内容。问题在于我必须绑定一个额外的VAO,一个包含

的数据
    glDrawElementsInstanced();

呼叫。因此它包含偏移,UV偏移,颜色叠加等数据。当我绑定它时,前一个似乎解除了绑定,这在OpenGL中是有道理的,我想,但我不知道如何做到这两个都有效?

这个想法是绘制共享相同模型的所有静态对象,而不是每帧上传任何数据。这完全是错误的做法吗?

1 个答案:

答案 0 :(得分:3)

  

当我绑定它时,前一个似乎解除了绑定,这在OpenGL中是有道理的,我想,但我不知道该怎么办才能让它们都活跃?

当然它解开了。这就是OpenGL的工作原理。它是一个状态机,你想要同时激活两个状态。

  

这个想法是绘制共享相同模型的所有静态对象,而不是每帧上传任何数据。

如果他们没有改变,那么不要改变它们。您只需绑定并激活顶点组件(如here所述)。

相关问题