正确设置正交投影?

时间:2016-12-07 09:11:24

标签: opengl glm-math orthographic

最近我需要使用glm库进行正投影。但是对于正交投影,我的场景不会渲染在视口的中心。

我的场景只是一个立方体,它使用glm :: perspective渲染得很好。我不太懂数学的东西,我只是使用glm :: ortho函数。

那么我该如何正确设置正投影呢?

这是我做的代码:

mat4 projection=ortho(0.0f, 800.0f, 600.0f, 0.0f,-1000.0f, 1000.0f);
mat4 view=lookAt(vec3(0,0,1),vec3(0,0,0),vec3(0,1,0));
mat4 model=mat4();

然后我将这三个矩阵发送到与透视投影相同的着色器。它应该是我屏幕中心的四边形,但是在我的程序中它被放在屏幕的左上角,结果像四分之一。

1 个答案:

答案 0 :(得分:1)

您的多维数据集显示在屏幕的左上角,因为这是您的正投影指定的坐标空间的原点(0,0,0)

使用之前的透视投影,您可能在屏幕中央有一个原点。您可以通过更改拼写投影中的值来回到这一点:

ortho(-(800.0f / 2.0f), 800.0f / 2.0f, 
        600.0f / 2.0f, -(600.0f / 2.0f), 
      -1000.0f, 1000.0f);