Ich versuche, einige Inkonsistenzen zu beheben, die ich in Dreieckstrip-Scheitelwindungsrichtung (im Uhrzeigersinn und gegen den Uhrzeigersinn) sehe. Ich zeichne ein Trapez, das in OpenGL um 90 Grad gegen den Uhrzeigersinn gedreht ist. Hier ist der relevante Code:Wechselt die Wicklungsrichtung in einem OpenGL-Dreiecksstreifen von Dreieck zu Dreieck?
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);
Von dem, was ich gelesen here, die Standard-Vorderseite in OpenGL ist gegen den Uhrzeigersinn, die das erste Dreieck in meinem Streifen bedeutet, sollte es Eckpunkten bestellt gegen den Uhrzeigersinn. Beim Zeichnen eines Dreiecksstreifens wechselt die Wicklung außerdem die Richtungen zwischen dem Uhrzeigersinn und dem Uhrzeigersinn von Dreieck zu Dreieck, so dass meine Eckpunkte auf diese Weise geordnet sind. Das erste Dreieck wäre also ABC, das zweite wäre BCD, das dritte CDE und das vierte DEF. Jedoch, Artikel this (im Zitat aus dem OpenGL Programming Guide) sagt, dass es sie als ABC, CBD, CDE, EDF zeichnen würde (unter der Annahme v0 - A, v1 - B, etc), was bedeutet, dass sie alle gleich gegen den Uhrzeigersinn winden Richtung.
Wenn ich die A/B-Notation korrekt aus der OpenGL-Spezifikation verstehe, würden die Dreiecke alle die gleiche Richtung haben, aber ich habe die wechselnde Wicklung an ein paar verschiedenen Orten gesehen. Ich nehme an, es ist nur eine Frage der Semantik, da die resultierende Form die gleiche ist, aber was ist die tatsächliche Wicklungsreihenfolge?