我尝试使用单个VAO来表示包含多个网格的单个VBO。现在我有:
glVertexArrayElementBuffer ( vertexArray, buffer );
glVertexArrayVertexBuffer ( vertexArray, positionLocation, buffer, 0, 3 * sizeof ( float ) );
glVertexArrayVertexBuffer ( vertexArray, normalLocation, buffer, (objectVertexBytes + objectIndexBytes), 3 * sizeof ( float ) ); // Issue 2
此处有更多来源:http://pastebin.com/PDuk3fDu
我认为我的问题主要在于片段的最后一行。
我以为我可以在同一个VBO中填充两个不同的网格?如果我只能在设置缓冲源时将状态设置为貌似,那怎么可能呢?
我经历过这个麻烦,因为我读到每个VBO只有一个VAO是非常低效的,因为绑定是一个相对昂贵的事情。我还读到在同一个VBO中存储具有类似需求的网格是一个好主意。
答案 0 :(得分:0)
不要将索引缓冲区与顶点数据(读取:属性)缓冲区混合使用VBO&#39。
总结:
VBO 1
Mesh 1 indices + Mesh 2 indices
(Of course you could separate out Mesh 1 and Mesh 2 here if you'd like)
VBO 2
Mesh 1 Attributes (Vertex, Normal, etc.)
Mesh 2 Attributes (Vertex, Normal, etc.)