最近我需要使用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();
然后我将这三个矩阵发送到与透视投影相同的着色器。它应该是我屏幕中心的四边形,但是在我的程序中它被放在屏幕的左上角,结果像四分之一。
答案 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);