对不同VBO使用OpenGL VAO

对不同VBO使用OpenGL VAO,opengl,Opengl,我正在为游戏编写自己的渲染器。我有一个类Geometry,它以VBOs顶点缓冲区对象的形式封装几何数据。几何图形还具有对InputLayout类型的对象的引用,该对象存储有关几何图形数据的信息。InputLayout实例在几何体实例之间共享。我正在使用InputLayout正确配置管道,例如,在调用draw之前使用GLVertexAttributePointer,例如glDrawArrays。配置例程的效率有点低,因为我必须扫描活动顶点着色器的活动属性,然后在活动InputLayout实例中查找

我正在为游戏编写自己的渲染器。我有一个类Geometry,它以VBOs顶点缓冲区对象的形式封装几何数据。几何图形还具有对InputLayout类型的对象的引用,该对象存储有关几何图形数据的信息。InputLayout实例在几何体实例之间共享。我正在使用InputLayout正确配置管道,例如,在调用draw之前使用GLVertexAttributePointer,例如glDrawArrays。配置例程的效率有点低,因为我必须扫描活动顶点着色器的活动属性,然后在活动InputLayout实例中查找这些属性。我想通过使用VAOs自动化整个过程


这就是问题所在。我应该为每个着色器/输入布局对或每个着色器/几何体对创建一个VAO吗?通过为每个着色器/InputLayout对创建VAO,我必须在每次绘制调用之前更改VAO中的缓冲区绑定。是否值得重新设计渲染器并为每个着色器/几何体对创建VAO?

使用VAO的目的是不必不断更改它们。绑定VAO并渲染。由于关联的缓冲区对象是VAO状态的一部分,因此唯一的方法是让VAO存储实际缓冲区,而不仅仅是布局。

使用VAO的目的是不必不断更改它们。绑定VAO并渲染。由于关联的缓冲区对象是VAO状态的一部分,因此唯一的方法是让VAO存储实际的缓冲区,而不仅仅是布局。

这就是我想知道的。这是我想知道的。谢谢