Sto cercando di chiarire alcune incongruenze che sto vedendo nella direzione di avvolgimento dei vertici della striscia triangolare (in senso orario e antiorario). Sto disegnando un trapezoide ruotato di 90 gradi in senso antiorario in OpenGL. Ecco il codice rilevante:La direzione di avvolgimento in una striscia triangolare OpenGL si alterna da triangolo a triangolo?
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);
Da quello che ho letto here, la faccia anteriore di default in OpenGL è in senso antiorario, il che significa che il primo triangolo nella mia striscia deve avere è vertici ordinato in senso antiorario. Inoltre, quando si disegna una striscia triangolare, l'avvolgimento cambia direzione in senso antiorario e orario da triangolo a triangolo, quindi i miei vertici sono ordinati in quel modo. Quindi dal mio codice, il primo triangolo sarebbe ABC, il secondo sarebbe BCD, terzo CDE e quarto DEF. Tuttavia, l'articolo this (nella citazione dalla Guida alla programmazione OpenGL) dice che li traccerebbe come ABC, CBD, CDE, EDF (supponendo v0 - A, v1 - B, ecc.), Il che significa che tutti si avvolgono nella stessa direzione in senso antiorario direzione.
Se io sto capendo la notazione A/B correttamente dalla specifica OpenGL, i triangoli sarebbero tutti nella stessa direzione del vento, ma ho visto la variabile di avvolgimento in pochi luoghi diversi. Suppongo che sia solo un problema di semantica dal momento che la forma risultante è la stessa, ma qual è l'ordine di avvolgimento effettivo?