Я пытаюсь изменить проекцию камеры с точки зрения на орфографическую. На данный момент мой код работает отлично с перспективной проекциейОт перспективы к орфографическим проекциям
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'? Подпись должна быть 'орто (левая, правая, нижняя, верхняя, ближняя, дальняя). Что это такое? – peppe
На самом деле да, установка верхушки в 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);' to 'm_ortho = glm :: орто (8.0f, 0.0f, 0.0f, 6.0f, 0.1f, 100.0f); ' заставляет размер вернуться к норме (более или менее). Но я не понимаю, существует ли правило или конкретное отношение для изменения значений размера от проекции в перспективе до орфографической проекции. (Просто чтобы не менять их вручную каждый раз) – Izzy88