【问题标题】:Converting Orthogonal Camera to Perspective OpenGL将正交相机转换为透视 OpenGL
【发布时间】:2011-04-23 16:10:07
【问题描述】:

我在使用 OpenGL 将正交相机转换为透视相机时遇到了一些麻烦。 我目前有我的正交相机跟随两个对象的中点,使用:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,_winWidth,0,_winHeight,150,-150);
glTranslated(-_middlePoint[0]+_winWidth/2, -_middlePoint[1]+_winHeight/2, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

上面的代码完美运行,现在我尝试这样使用它:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, _winWidth/_winHeight, 1.0, 1000.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 800, _middlePoint[0], _middlePoint[1], 50, 0, 0, 1);
glLoadIdentity();

我只是得到一个黑屏。有什么想法吗?我尝试将向上向量从 0,0,1 更改为 0,1,0 并且保持不变。

任何帮助表示赞赏。

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    如果您的代码已经使用glOrtho,您通常可以通过将其更改为glFrustum 来切换到透视投影。如果您正在编写新代码,gluPerspectivegluLookat 可能更容易,但对于已经使用正交投影的代码,只需使用相同的参数调用 glFrustum 即可轻松切换到透视。

    【讨论】:

    • 我如何将它应用到这个特定的例子中?
    • @pirezas:就像我说的,只需将glOrtho 更改为glFrustum,否则保持代码完全不变,然后重新编译。除非您在其他地方做了一些奇怪的事情,否则您的投影将从正交投影变为透视投影,而没有其他变化。
    • 嗯,我试过了,但还是不行:/不过还是谢谢你的建议。
    猜你喜欢
    • 2015-08-27
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2014-04-01
    • 2019-07-06
    • 2016-02-11
    • 2015-08-25
    相关资源
    最近更新 更多