2012-02-09 11 views
2

glDrawElementsがどのようにインデックスを使用しているのか不思議です。 GL_TRIANGLESによって描画されたインデックス{1、2、3、4、5、6}の配列を持っているとしましょう。私の質問は、それが指標「123」、「456」、または四角形「123」、「234」、「345」、「456」の2つの三角形を形成するかどうかです。私は.objモデルをインポートしていますが、データは必要に応じて読み込まれますが、レンダリングはちょうどうんざりしてしまいます。glDrawElements - どのようにインデックスを「消費する」のですか?

+0

ええ、私はちょうど質問を混乱させました。それは "コンソメ"ではなく "消費"する必要があります:) –

+2

それを編集し、スペルを修正します。 – genpfault

+2

私は前に編集ボタンを見逃しました、ありがとう! :) –

答えて

4

GL_TRIANGLESモードでは、すべての三角形に3つの頂点が必要なため、一度に3つのインデックスを引きます(インデックス1,2,3,4,5,6の2つの三角形を描画します)。

隣接関係がある場合や三角形を描いている場合は、のストリップの場合は、異なる数字が当てはまります。また

、あなたはOBJファイルをインポートしていることを述べたことから、OBJファイルで頂点とテクスチャ座標および/または法線上異なる指標があるかもしれないことに注意します。
これはバグではなく、機能です。これはOBJで許容されており、多くの輸出業者は、表面を滑らかに陰影付けした場合(つまり、2つの面が法線を共有する場合)に空間を節約します。
ユニークなの頂点のリストを作成し、それぞれ独自の法線、テクスチャなどを設定し、これらのインデックスを使用する必要があります。

+0

追加情報ありがとう、しかし私はすでにそれをしています。インポートからの私の結果は、一意の頂点のリストと、一意の頂点を使用して1つの面(すべてが三角形です)を形成するインデックスの配列です。実際の問題は、.objファイルに書き出すためのBlenderスクリプトは、頂点の巻き線順序を維持しないため、法線を他の方法とは異なる方向に向けることです。私は.xファイルにエクスポートしようとします、それが動作するかどうかを確認します。 –

4

GL_TRIANGLESを使用すると、123, 456になります。 GL_TRIANGLE_STRIPSを使用すると、123, 234, 345, 456になります。

関連する問題