私は率直になりたいので、シナリオから始めます:-
2 つの立方体を描画する必要があり、両方の立方体のデータでバッファー オブジェクトを作成、バインド、および入力し、両方の立方体の要素配列が次のようになっているとします。
const GLshort indexData[] =
{
//Object 1
0, 2, 1, 3, 2, 0,
4, 5, 6, 6, 7, 4,
8, 9, 10, 11, 13, 12,
14, 16, 15, 17, 16, 14,
//Object 2
18, 20, 19, 21, 20, 18,
22, 23, 24, 24, 25, 22,
26, 27, 28, 29, 31, 30,
32, 34, 33, 35, 34, 32,
};
2 つのオブジェクトを描画する最初の方法は次のとおりです。
// first Cube
glDrawElements(GL_TRIANGLES, ARRAY_COUNT(indexData), GL_UNSIGNED_SHORT, 0);
// second Cube
glDrawElementsBaseVertex(GL_TRIANGLES, ARRAY_COUNT(indexData),GL_UNSIGNED_SHORT, 0, numberOfVertices / 2);
ただし、次のコードを使用して両方の立方体を描画することは可能ですか?
// first cube
glDrawElements(GL_TRIANGLES, ARRAY_COUNT(indexData), GL_UNSIGNED_SHORT, 0);
//second cube
// set the indice pointer to 24 so that it starts reading data for the second cube
glDrawElements(GL_TRIANGLES, ARRAY_COUNT(indexData), GL_UNSIGNED_SHORT, pointer to 24th element);
はいの場合、使用するポイントは何glDrawElementBaseVertex()
ですか?