glDrawRangeElementsBaseVertex() の使用中に疑問に直面しています。
以下はソースコードです:
GLfloat vertices[]=
{
-0.9,-0.9,1.0,1.0,
-0.1,-0.9,1.0,1.0,
-0.1,-0.1,1.0,1.0,
-0.9,-0.1,1.0,1.0,
0.1,0.1,1.0,1.0,
0.9,0.1,1.0,1.0,
0.9,0.9,1.0,1.0,
0.1,0.9,1.0,1.0,
-0.9,0.1,1.0,1.0,
-0.1,0.1,1.0,1.0,
-0.1,0.9,1.0,1.0,
-0.9,0.9,1.0,1.0,
0.1,-0.1,1.0,1.0,
0.1,-0.9,1.0,1.0,
0.9,-0.9,1.0,1.0,
0.9,-0.1,1.0,1.0
};
GLuint indices_uint[]=
{
0,1,2,3,222,//Triangle 0
4,5,6,7,222,//Triangle 1
8,9,10,11,222,//Triangle 2
12,13,14,15,222,//Triangle 3
4,5,6,7,222,//Triangle 1
8,9,10,11,222,//Triangle 2
4,5,6,7,222,//Triangle 1
12,13,14,15,222//Triangle 3
};
glEnable(GL_PRIMITIVE_RESTART);
glPrimitiveRestartIndex(222);
glEnableVertexAttribArray(position);
glVertexAttribPointer(position, 4, GL_FLOAT, GL_FALSE, 0,vertices);
glDrawRangeElementsBaseVertex(GL_TRIANGLE_STRIP,0,7,10,GL_UNSIGNED_INT,indices_uint,4);
出力が正確にどうあるべきかわかりません。コードは三角形 1 と三角形 2 をレンダリングします。 [start,end] を [0,7] として渡すと、三角形 2 はどのくらい正確に描画されますか
仕様には次のように書かれています:
Index values lying outside the range [start, end] are treated in the same way as glDrawElementsBaseVertex()
{8,9,10,11} が [0,7] の範囲外であっても、レンダリングに使用されるということですか? もしそうなら、なぜ glDrawRangeElementsBaseVertex() を使わなければならないのでしょうか?