Ho la scena con un semplice triangolo. E sto usando la proiezione prospettica. Ho la mia matrice MVP istituito (con l'aiuto di GLM) come questo:Modifica dalla prospettiva alla matrice ortografica
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;
E tutto funziona bene, posso cambiare i valori della fotocamera e il triangolo è ancora visualizzato correttamente.
Ma io voglio usare la proiezione ortografica. E quando cambio la matrice di proiezione in ortografica, funziona in modo imprevedibile, non riesco a visualizzare il triangolo o ne vedo solo una piccola parte nell'angolo dello schermo. Per usare la proiezione ortogonale, faccio questo:
glm::mat4 Projection = glm::ortho(0.0f, 800.0f, 600.0f, 0.0f,-5.0f, 5.0f);
mentre io non cambio nulla in vista e il modello matrici. E semplicemente non funziona correttamente.
Ho solo bisogno di una spinta nella giusta direzione, sto facendo qualcosa di sbagliato? Cosa mi manca, cosa devo fare per impostare correttamente la proiezione ortografica?
PS non so se è necessario, ma queste sono le coordinate del triangolo:
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 Grazie, sono davvero stupido: \ Ha funzionato! se potessi chiederti solo una cosa in più - ho provato a rimuovere completamente il modello e visualizzare le matrici e tutto è ancora visualizzato correttamente! Ho bisogno solo della matrice di proiezione quando sto usando l'ortografia? Scusate se la domanda è un po 'confusa, ho appena iniziato con OpenGL qualche giorno fa. Molte grazie! – IanDess
Il sistema di coordinate predefinito non trasformato è in alto a sinistra (-1,1), in basso a destra (1, -1). La coordinata z dipende dall'utilizzo di un sistema di coordinate RH o LH. Se questa misura si adatta alle tue esigenze, puoi lasciare la matrice di proiezione all'identità e utilizzare solo la matrice di visualizzazione per navigare nella scena. Altrimenti puoi usare la matrice di proiezione per ridimensionare la scena, ecc. –