Спектр OpenGL между перспективой и ортогональной проекцией

В OpenGL (во всех версиях, хотя я работаю в OpenGL ES 2.0) есть возможность использовать перспективную проекцию вместо ортогональной. Есть ли способ контролировать степень ортогональности?

Чтобы представить проблему (и, пожалуйста, не принимайте это как реальный вопрос, я хорошо знаю, что в OpenGL нет камеры), предположим, что сцена визуализируется с окном просмотра, «смотрящим» вниз по оси -z. Две параллельные линии, проходящие на конечное расстояние по оси -z в точках (x,y)=1,1 и (x,y)=-1,1, будут отображаться как точки в ортогональной проекции или как две линии, которые в конечном итоге сходятся к один пиксель в перспективной проекции. Есть ли способ, чтобы значения x и y, представленные внешними краями экрана, оставались такими же, как в проекционном пространстве - я предполагаю, что это требует не изменять усеченную пирамиду - но чтобы линии сходились только на части пути к один пиксель?


person user2673086    schedule 11.08.2013    source источник


Ответы (1)


Есть ли способ контролировать степень ортогональности?

Либо что-то является ортогональным, либо нет. Нет такого понятия, как «просто немного ортогональный».

Так или иначе, с математической точки зрения перспективная проекция с бесконечно узким полем зрения ортогональна. Таким образом, вы можете использовать glFrustum с очень большим расстоянием между ближней и дальней плоскостями вместе с противодействующим перемещением в представлении модели, чтобы вернуть дальний объем просмотра обратно в исходное положение.

person datenwolf    schedule 11.08.2013