【问题标题】:Orthogonal & Perspective Projection OpenGL正交和透视投影 OpenGL
【发布时间】:2016-02-11 18:26:39
【问题描述】:

我正在使用下面的代码 sn-p 根据用户的选择在正交投影和透视投影之间切换。然而,不管用户的选择如何,渲染的模型总是处于正交投影中。您能否让我知道我在这里缺少什么。

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);

【问题讨论】:

  • 10 度是一个非常紧凑的 FOV。

标签: c++ opengl projection perspective orthogonal


【解决方案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

【讨论】:

  • 谢谢 Michael。我尝试了 gluPerspective(135.0, 1, 0.01, 200),但我得到的只是缩小版,看起来仍然正交。
  • 正如我所说 - 将相机移近一点。
  • 抱歉之前错过了。将相机移近一点就可以了。万分感谢! :)
猜你喜欢
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多