OpenGL可以同时激活两个VAO

OpenGL is it possible to have two VAOs active at the same time?

本文关键字:两个 VAO 激活 OpenGL      更新时间:2023-10-16

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

    glBindVertexArray(VAO);

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

    glDrawElementsInstanced();

叫。因此,它包含偏移,UV偏移,颜色叠加等数据。当我绑定它时,前一个似乎会自行解绑,我想这在 OpenGL 中是有意义的,但我不确定该怎么做才能让两者都处于活动状态?

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

当我绑定它时,前一个似乎会自行解绑,我想这在 OpenGL 中是有意义的,但我不确定该怎么做才能让两者都处于活动状态?

当然,它解除了束缚。这就是OpenGL的工作方式。它是一个状态机,您希望同时有两个状态处于活动状态。

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

如果它们不改变,那就不要改变它们。您只需绑定并激活顶点组件(如此处所述)。