我正在编写一个OpenGL3 +应用程序,并且对VAO的使用感到困惑.现在我只有一个VAO,一个围绕原点的标准化四边形集.这个单一的VAO包含3个VBO; 一个用于位置,一个用于表面法线,一个GL_ELEMENT_ARRAY_BUFFER用于索引(因此我只能存储4个顶点,而不是6个).
我已经设置了一些辅助方法来将对象绘制到场景中,例如drawCube()获取位置和旋转值并遵循该过程;
uniform mat4 model顶点着色器变量.glDrawElements()将四边形绘制到此面部的位置.我刚刚开始添加每个立方体颜色的任务,并意识到我不能将我的颜色VBO添加到单个VAO中,因为它会随着每个立方体而改变,这感觉不对.
我刚读过这个问题; OpenGL VAO最佳实践,告诉我我的方法是错误的,并且我应该使用更多的VAO来保存每次设置整个场景的工作.
应该使用多少个VAO?显然,如果场景中的每个静态表面都有VAO,那么我的1的方法并不是最优的吗?移动的是什么?
我正在为每个顶点写一个统一变量,这是正确的吗?我读到uniform着色器变量不应该改变中间帧,如果我能够为我的uniform变量写入不同的值,那么制服与in顶点着色器中的简单变量有何不同?
我开始学习现代 OpenGL,正如标题所说,我只是想确定 VAO 在渲染管道中的用途。
渲染时,我们使用 VBO 来存储数据,然后使用 OpenGL 函数,例如:glAttribe 向 GPU 表示我们将“以这种方式”使用这些数据,例如:前 3 个浮点在我们经过的顶点中vbo 实际上是位置,接下来的 3 个浮点数是颜色等...然后我读到我们需要一些 VAO 来存储顶点的描述,但是那里的目标是什么?
提前致谢。