1つの頂点バッファから複数のオブジェクトをレンダリングする際に問題があります。 私はすべての頂点と複数のIBOを含むVBOを持っています。 私は、n個のIBOに対してn個のVAOを作成し、このVAOごとにVBOとIBOの1つをバインドすることを考えました。本当にこれを修正する方法を知らないでください。単一の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);
}
私の第二のアイデアは、あなたが使用するすべてのVAOにごVBOを取り付けたことはありません
corectタグを使用します。これはCではありません。 – Olaf
"もう一度データをアップロードせずにこのバッファをvaoにバインドするにはどうしたらいいですか?*"最初にこのバッファをVAOに接続したことはありません。バッファにデータをアップロードすると、そのバッファを頂点データに使用すること(*頂点データを渡す以外)は*何も*できません。 –