7

トライアングル ストリップの頂点の巻き方向 (時計回りと反時計回り) で見られるいくつかの矛盾を解決しようとしています。OpenGLで反時計回りに90度回転させた台形を描いています。関連するコードは次のとおりです。

unsigned char mIndices[] = { 0, 1, 2, 3, 4, 5 };
signed short mVertices[] = {
                                -50, 100, 0,    // A
                                -85, 65, 0,     // B
                                -50, 65, 0,     // C
                                -85, -65, 0,    // D
                                -50, -65, 0,    // E
                                -50, -100, 0,   // F
};

...

glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_SHORT, 0, mVertices);

...

glDrawElements(GL_TRIANGLE_STRIP, sizeof(mVertices)/sizeof(mVertices[0]), GL_UNSIGNED_BYTE, mIndices);

ここで読んだことから、OpenGL のデフォルトの前面は反時計回りです。これは、ストリップの最初の三角形の頂点を反時計回りに並べる必要があることを意味します。さらに、三角形のストリップを描画すると、三角形から三角形へと反時計回りと時計回りの間で巻線の方向が切り替わるため、頂点はそのように順序付けられます。したがって、私のコードから、最初の三角形は ABC、2 番目は BCD、3 番目は CDE、4 番目は DEF になります。ただし、この記事 (OpenGL プログラミング ガイドからの引用) は、ABC、CBD、CDE、EDF (v0 - A、v1 - B などを想定) として描画すると述べています。方向。

OpenGL 仕様から A/B 表記を正しく理解している場合、三角形はすべて同じ方向に曲がりますが、いくつかの異なる場所でさまざまな曲がりが見られます。出来上がる形は同じなのでセマンティクスの問題かと思いますが、実際の巻き順はどうなっているのですか?

4

2 に答える 2