2015-11-10 3 views
0

Ниже я использую фрагмент кода ниже, чтобы переключаться между ортогональными и перспективными проекциями на основе выбора пользователя. Однако, независимо от выбора пользователя, рендер-модель всегда находится в ортогональной проекции. Не могли бы вы сообщить мне, что мне здесь не хватает.Ортогональная и перспективная проекция OpenGL

Orthogonal

Perspective

Как видно выше, перспективная проекция, полученная в настоящее время является лишь увеличенным в версии ортогональной проекции.

спасибо.

float fov = 10.0; 
float Oleft = -1.0, Oright = 1.0, Obottom = -1.0, Otop = 1.0; 

glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 

    if(proj_type==0) 
     gluPerspective(fov, 1, 0.1, 200); 
    else 
     glOrtho(Oleft, Oright, Obottom, Otop,0.1,50); 

    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    gluLookAt(10, 7, 10, 0, 0, 0, 0, 1, 0); 
+3

10 градусов - довольно плотное поле зрения. – genpfault

ответ

1

Ортогональная проекция на самом деле является перспективной с FoV = 0.0f. Понижение FoV в перспективе делает его похожим на ортогональное.

Просто передвиньте камеру и увеличьте FoV до 45-60 градусов. https://www.packtpub.com/graphics/9781849691727/graphics/1727_04_24.jpg https://drive.google.com/file/d/0B2jjLSK7_nvaVE9WUGZRenJ0bVE/view?usp=sharing

+0

Спасибо Michael.I попробовал gluPerspective (135.0, 1, 0.01, 200), но все, что я получил, было увеличенной версией, все еще выглядело ортогонально. – wateva

+0

Как я уже сказал - сдвиньте камеру ближе. –

+0

Прошу прощения за то, что раньше. Сдвигается камера. Благодаря тонну! :) – wateva

Смежные вопросы