我從一個頂點緩衝區渲染多個對象時出現問題。 我有一個包含所有頂點和多個IBO的VBO。 我的想法是爲n個IBO創建n個VAO,併爲每個這個VAO綁定VBO和一個IBO。不要真正知道如何解決這個問題。單個VBO和多個IBO
// all indices
std::vector<std::vector<unsigned int>> allIndices;
// gen buffers for ibos
glGenBuffers(allIndices.size(),ibos);
// gen vaos
glGenVertexArray(allIndices.size(),vaos);
// vbo for vertices
glGenBuffers(1,&vbo);
glBindBuffer(GL_ARRAY_BUFFER,vbo);
glBufferData(GL_ARRAY_BUFFER,...);
// bind VAOn + IBOn + VBO
for(unsigned int x = 0; x < allIndices.size(); x++) {
glBindVertexArray(vao[x]);
// bind current ibo
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,ibo[x]);
glBufferData(GL_ELEMENT_ARRAY_BUFFER,...);
//
glBindBuffer(GL_ARRAY_BUFFER,vbo);
// how to bind this buffer to the vao without uploading the data once more?
glBindVertexArray(0);
}
我的第二個想法是concatinate所有指數,並與glDrawRangeElements打電話給他們()
使用corect標籤。這不是C. – Olaf
「*如何將此緩衝區綁定到vao而無需再次上傳數據?*」您從未將此緩衝區添加到VAO中以開始。將數據上傳到緩衝區與使用頂點數據的緩衝區無關(除了將頂點數據傳遞給緩衝區)。 –