Ich versuche, meine Kameraprojektion von Perspektive zu orthographisch zu ändern. mein Code Im Moment arbeitet gut mit der perspektivischen ProjektionVon Perspektive zu orthographischen Projektionen
m_prespective = glm::perspective(70.0f, (float)DISPLAY_WIDTH/(float)DISPLAY_HEIGHT, 0.01f, 1000.0f);
m_position = glm::vec3(mesh.centre.x, mesh.centre.y, -mesh.radius);
m_forward = centre;
m_up = glm::vec3(0.0f, 1.0f, 0.0f);
return m_prespective * glm::lookAt(m_position, m_forward, m_up);
Aber sobald ich es Orthogonalprojektion ändere ich nicht mehr meine Masche sehen kann.
m_ortho = glm::ortho(0.0f, (float)DISPLAY_WIDTH, (float)DISPLAY_HEIGHT,5.0f, 0.01f, 1000.0f);
m_position = glm::vec3(mesh.centre.x, mesh.centre.y, -mesh.radius);
m_forward = centre;
m_up = glm::vec3(0.0f, 1.0f, 0.0f);
return m_ortho * glm::lookAt(m_position, m_forward, m_up);
Ich verstehe nicht, was ich falsch mache.
Haben Sie versehentlich die Argumente in 'ortho' getauscht? Die Signatur sollte "ortho (links, rechts, unten, oben, nah, weit)" sein. Was ist das 5.0? – peppe
Eigentlich ja, setze oben auf 0.0f erlauben mir zumindest eine extrem kleine Reihe von Pixeln in der oberen linken Ecke meines Fensters zu sehen. Bei Verwendung der perspektivischen Projektion wird mein Netz jedoch in der Mitte des Bildschirms angezeigt und hat eine "normale" Größe. Dennoch verstehe ich nicht, warum es so weit weg und nicht zentriert angezeigt wird. Hast du eine Ahnung? – Izzy88
In Anbetracht dessen, dass meine DISPLAY_WIDTH und DISPLAY_HEIGHT jeweils 800 und 600 sind, ändern Sie diese Werte von 'm_ortho = glm :: ortho (0.0f, 800.0f, 600.0f, 5.0f, 0.01f, 1000.0f);' zu 'm_ortho = glm :: ortho (8,0 f, 0,0 f, 0,0 f, 6,0 f, 0,1 f, 100,0 f); ' macht die Größe wieder normal (mehr oder weniger). Aber ich verstehe nicht, ob es eine Regel oder eine spezifische Beziehung gibt, um die Größenwerte von der perspektivischen Projektion in die orthographische Projektion zu ändern. (Nur um zu vermeiden, sie jedes Mal manuell zu ändern) – Izzy88