私は、カメラ投影を視点から正射影に変更しようとしています。 現時点では私のコードは、透視投影視点から正投影へ
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);
で正常に動作しているしかし、すぐに私は正投影に変更するように私はもう私のメッシュを見ることができません。
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);
私は間違っていることを理解していません。
誤って引数を 'ortho'に入れ替えましたか?署名は 'ortho(left、right、bottom、top、near、far)'でなければなりません。その5.0は何ですか? – peppe
実際にはyes、topを0.0fに設定すると、少なくともウィンドウの左上隅に極端に小さなピクセルが表示されます。ただし、透視投影を使用すると、メッシュは画面中央に表示され、「通常」のサイズになります。それでも、なぜ遠く離れて表示されているのか、中心にないのか分かりません。何か手掛かりはありますか? – Izzy88
DISPLAY_WIDTHとDISPLAY_HEIGHTがそれぞれ800と600であることを考慮して、これらの値を 'm_ortho = glm :: ortho(0.0f、800.0f、600.0f、5.0f、0.01f、1000.0f);から' m_ortho = glm ::オルト(8.0f、0.0f、0.0f、6.0f、0.1f、100.0f); ' は、サイズを通常(多かれ少なかれ)に戻します。しかし、サイズの値を透視投影から正射影投影に変更するためのルールまたは特定の関係があるかどうかはわかりません。 (毎回手動で変更するのを避けるため) – Izzy88