頂点配列を使用して適度に単純な形状を作成する作業を行っており、順調に進んでいますが、今は 2 つ (またはそれ以上) の三角形ファン オブジェクトを描画したいと考えています。1 回だけ電話をかける方法はありますか、gl.glDrawArrays(GL.GL_TRIANGLE_FAN,...
それともファンごとに個別に電話をかける必要がありますか?
ウィキペディアのトライアングル ストリップの記事では、プリミティブ リスタートと呼ばれるものについて説明していますが、OpenGL のVertex Specificationを見ると、これは頂点配列では機能しないと思われます。
複数の三角扇子の正しい描き方は?これが私の現在の描画方法です:
public void draw(GL gl){
if(vertices.length == 0)
return;
gl.glEnableClientState(GL.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL.GL_COLOR_ARRAY);
gl.glEnableClientState(GL.GL_NORMAL_ARRAY);
gl.glVertexPointer(3, GL.GL_FLOAT, 0, vertBuff);
gl.glColorPointer(3, GL.GL_FLOAT, 0, colorBuff);
gl.glNormalPointer(GL.GL_FLOAT,0, normalBuff);
// drawArrays count is num of points, not indices.
gl.glDrawArrays(GL.GL_TRIANGLES, 0, triangleCount);
gl.glDrawArrays(GL.GL_QUADS, triangleCount, quadCount);
gl.glDrawArrays(GL.GL_TRIANGLE_FAN, triangleCount+quadCount, fanCount);
gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL.GL_COLOR_ARRAY);
gl.glDisableClientState(GL.GL_NORMAL_ARRAY);
}
編集
draw の関連セクションを次のように更新しました。
for(int i = 0; i < fanLength.length; i++){
gl.glDrawArrays(GL.GL_TRIANGLE_FAN,
triangleCount+quadCount+fanDist[i], fanLength[i]);
}
ここで、fanDist はこのファンの始点の (ファンの始点からの) オフセットであり、fanLength はこのファンの長さです。
これはうまくいくようですが、それでもこれは正しい方法ですか? より良い方法はありますか?