Tengo la escena con un simple triángulo. Y estoy usando proyección de perspectiva. He puesto mi matriz MVP arriba (con la ayuda de GLM) de esta manera:Cambiando de perspectiva a matriz ortográfica
glm::mat4 Projection = glm::perspective(45.0f, 4.0f/3.0f, 0.1f, 100.0f);
glm::mat4 View = glm::lookAt(
glm::vec3(0,0,5), // Camera is at (0,0,5), in World Space
glm::vec3(0,0,0), // and looks at the origin
glm::vec3(0,1,0) // Head is up (set to 0,-1,0 to look upside-down)
);
glm::mat4 Model = glm::mat4(1.0f);
glm::mat4 MVP = Projection * View * Model;
Y todo funciona bien, puedo cambiar los valores de la cámara y el triángulo se sigue mostrando correctamente.
Pero quiero usar la proyección ortográfica. Y cuando cambio la matriz de proyección a ortográfica, funciona de manera impredecible, no puedo mostrar el triángulo, o simplemente veo una pequeña parte de ella en la esquina de la pantalla. Para usar la proyección ortográfica, hago esto:
glm::mat4 Projection = glm::ortho(0.0f, 800.0f, 600.0f, 0.0f,-5.0f, 5.0f);
mientras no cambio nada en las matrices de Vista y Modelo. Y simplemente no funciona correctamente.
Solo necesito un empujón en la dirección correcta, ¿estoy haciendo algo mal? ¿Qué me estoy perdiendo? ¿Qué debo hacer para configurar correctamente la proyección ortográfica?
PD No sé si se necesita, pero estas son las coordenadas del triángulo:
static const GLfloat g_triangle[] = {
-1.0f, 0.0f, 0.0f,
1.0f, 0.0f, 0.0f,
0.0f, 2.0f, 0.0f,
};
@Nico_Schertler Gracias, soy realmente estúpido: \ ¡Eso funcionó! si pudiera preguntarte una cosa más: intenté eliminar por completo el modelo y ver matrices y todo sigue apareciendo correctamente. ¿Necesito solo la matriz de proyección cuando estoy usando orthographic? Lo siento si la pregunta es un poco confusa, acabo de comenzar con OpenGL hace unos días. ¡Muchas gracias! – IanDess
El sistema de coordenadas no transformadas predeterminado se encuentra arriba a la izquierda (-1,1), abajo a la derecha (1, -1). La coordenada z depende de si usa un sistema de coordenadas RH o LH. Si esta medida se adapta a sus necesidades, puede dejar la matriz de proyección en la identidad y usar solo la matriz de vista para navegar por la escena. De lo contrario, puede usar la matriz de proyección para escalar la escena, etc. –