Я использую фрагмент кода ниже, чтобы переключаться между ортогональной и перспективной проекциями на основе выбора пользователя. Однако независимо от выбора пользователя представленная модель всегда находится в ортогональной проекции. Не могли бы вы дать мне знать, что мне здесь не хватает.
Как видно выше, перспективная проекция, полученная в настоящее время, является просто увеличенной версией ортогональной проекции.
Спасибо.
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);
Ортогональная проекция на самом деле является перспективной с FoV = 0.0f. Понижение 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
Других решений пока нет …