Estoy tratando de entender el sistema de coordenadas OpenGL. En todas partes veo que se describe como diestro, pero no se corresponde con mi experiencia. Traté de dibujar algunas formas y objetos tridimensionales y veo que aparentemente el eje z apunta "a la pantalla" (mientras que x apunta hacia la derecha, y arriba, que es la descripción del sistema de coordenadas para zurdos). ¿Qué me estoy perdiendo?Donde puntos OpenGL z-axis?
edición: Por ejemplo:
http://img576.imageshack.us/img576/9234/triangles.jpg
Si + Z puntos espectador, ¿por qué triángulo verde, que coordenada z es mayor, está detrás de rojo?
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();
"If + Z points viewer, ¿por qué el triángulo verde, cuya coordenada z es más grande, está detrás del rojo?" Has rotado toda la escena dos veces. Llame a glLoadIdentity para la matriz de vista modelo antes de renderizar triángulos, luego compare los resultados. – SigTerm