1

現在、次のコードで三角形を使用してシーンをレンダリングしています。

        glBindVertexArrayOES(_mVertexArrayObjectTriangles);
        glBindBuffer(GL_ARRAY_BUFFER, _mVertexPositionNormalTriangles);
        glDrawElements(GL_TRIANGLES, _mCRBuffer->GetIndexTriangleData()->size(), GL_UNSIGNED_INT, 0);
        glBindBuffer(GL_ARRAY_BUFFER, 0);
        glBindVertexArrayOES(0);

_mVertexArrayObjectTriangles は、三角形を介してレンダリングされる要素を保持する頂点配列オブジェクトです

_mVertexPositionNormalTriangles は頂点と頂点法線の配列です

_mCRBuffer->GetIndexTriangleData() は、頂点配列へのインデックスの配列です。これは、各三角形をエンコードする整数の単純な配列です (a、b、c、a、b、d は 2 つの三角形 abc と abd をエンコードします)。

すべて正常に動作しますが、三角形の代わりに三角形ファンを使用してプリミティブをレンダリングしたいと考えています。次のようなものを使用して描画される三角形ファンの配列 (つまり、それ以上) を設定するにはどうすればよいですか?

glDrawElements(GL_TRIANGLE_FAN, ....

インデックス配列を設定して、レンダリング用の三角形ファンのセットにインデックスを付ける方法を教えてください (三角形の代わりに)。頂点自体を変更する必要はありません。三角形の代わりに三角形ファンを使用してレンダリングするためのインデックスだけです。

インデックス配列の設定方法を含め、三角形ストリップ (ここ)を使用した良い例を見つけることができますが、三角形ファンには何もありません。

4

1 に答える 1

1

データをそれに応じて設定する必要があるため、ストリップからファンへの変更は簡単ではありません。他のすべての三角形が発生する中心頂点が必要です

ここに画像の説明を入力

それを行うことを選択した場合は、図に示されている方法で頂点を並べ替えるだけでよく、共通の頂点を持つ頂点のチャンクでそれを行うようにしてください。

于 2013-04-14T01:48:56.167 に答える