这是一个理论问题,所以到目前为止我还没有代码。
假设我有一个带有顶点位置数据的VBO,并在VAO中使用它来渲染带有特殊索引数组的三角形的索引(glDrawElements())数字。
现在我想在第二个VAO中重复使用这个数据缓冲区来渲染一些由行组成的其他数字,但是使用不同的索引数组。
如何绑定缓冲区,以便重用第一个VAO的顶点数据?
答案 0 :(得分:4)
在VAO之间共享缓冲区不需要特殊代码,只需像往常一样绑定它们。
设置:
glBindVertexArray(VAO[0]);
glBindBuffer(GL_ARRAY_BUFFER, locBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, triangleBuffer);
glVertexAttrPointer(...);
glBindVertexArray(VAO[1]);
glBindBuffer(GL_ARRAY_BUFFER, locBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, lineBuffer);
glVertexAttrPointer(...);
并在绘图时:
glBindVertexArray(VAO[0]);
glDrawElements(...);
glBindVertexArray(VAO[1]);
glDrawElements(...);