Sto provando a capire il sistema di coordinate OpenGL. Ovunque io veda è descritto come destrimano, ma non corrisponde alla mia esperienza. Ho provato a disegnare forme e oggetti tridimensionali e vedo che apparentemente punti z-axis "nello schermo" (mentre x punta a destra e y su - che è la descrizione del sistema di coordinate mancino). Cosa mi manca?Dove punti OpenGL z-axis?
edit: Per esempio:
http://img576.imageshack.us/img576/9234/triangles.jpg
Se + punti Z spettatore, perché triangolo verde, che coordinata z è più grande, è dietro uno rosso?
initializeGL:
qglClearColor(Qt::darkGray);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glEnable(GL_COLOR);
resizeGL:
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0f, 50.0f, -50.0f, 50.0f, 50.0, -50.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
paintGL:
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef (-30.0, 1.0, 0.0, 0.0);
glRotatef (20.0, 0.0, 1.0, 0.0);
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINES);
glVertex3f(45.0, 0.0, 0.0);
glVertex3f(-45.0, 0.0, 0.0);
glVertex3f(0.0, 45.0, 0.0);
glVertex3f(0.0, -45.0, 0.0);
glVertex3f(0.0, 0.0, 45.0);
glVertex3f(0.0, 0.0, -45.0);
glEnd();
glBegin(GL_TRIANGLES);
//Red triangle:
glColor3f(1.0, 0.0, 0.0);
glVertex3f(0.0, 0.0, 1.0);
glVertex3f(0.0, 20.0, 1.0);
glVertex3f(20.0, 0.0, 1.0);
//Green triangle:
glColor3f(0.0, 1.0, 0.0);
glVertex3f(-15.0, 0.0, 20.0);
glVertex3f(0.0, 25.0, 20.0);
glVertex3f(15.0, 0.0, 20.0);
glEnd();
"Se il visualizzatore di punti + Z, perché il triangolo verde, che la coordinata z è più grande, è dietro quello rosso?" Hai ruotato l'intera scena due volte. Chiama glLoadIdentity per la matrice della vista del modello prima di rendere i triangoli, quindi confrontare i risultati. – SigTerm