2012-03-03 8 views
1

GL_TRIANGLE_FANで描画したい複数のポリゴンを頂点配列にロードしました。 私はglDrawArraysを1回呼び出すだけでなく、glPrimitiveRestartIndexを使ってこれを実行して、新しいポリゴンの開始位置を指定しようとしています。 glPrimitiveRestartIndexを複数回呼び出すことはできますか?例えば、8頂点のポリゴンを3つ(合計24頂点)読み込んだとします。複数のglPrimitiveRestartIndexコール

glPrimitiveRestartIndex(8); 
glPrimitiveRestartIndex(16); 

次にglDrawArraysを呼び出しますか? うまくいかないようです。 OpenGLはglPrimitiveRestartIndexの最後の呼び出しを考慮に入れているようです。

答えて

5

プリミティブ再起動インデックスは1つのみです。 glPrimitiveRestartIndex関数は、1つのリスタートインデックスを設定します。

考えてみましょう:インデックスが複数の場合は、(どのようにして再起動インデックスにならないようにする)にしますか?

プリミティブを再起動してglDrawArraysを使用しないでください。

+0

実際、私は理解できませんでした。 glPrimitiveRestartIndexとは何ですか? 私はそれが、1回の呼び出しで複数のglDrawArrays(またはglDrawElements)を結合するために使用されていると考えました。ではない? –

+3

@Guto:再スタートインデックスは、インデックスバッファ(ヒントヒント)からフェッチしたときに実際に頂点を指定しないインデックスです。代わりに、プリミティブを再起動する必要があることを意味します。したがって、再スタートインデックスを65535に設定し、{0,1,2,3,4,6535,5,6,7,8}を 'GL_TRIANGLE_STRIP'として描画すると、5つの三角形が得られます。最初の5つのインデックスの最初の3つと、最後の4つの次の2つです。65535は、再起動を指示します。 –

+0

うーん、私はそれを得た...非常に助けてくれてありがとう! –

関連する問題