Zai*_*ain 0 opengl orthographic glm-math
最近我需要使用 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();
Run Code Online (Sandbox Code Playgroud)
然后我将这三个矩阵发送到与透视投影相同的着色器。它应该是我屏幕中央的一个四边形,但在我的程序中它位于屏幕的左上角,结果像四分之一.
您的立方体出现在屏幕的左上角,因为这是(0,0,0)正交投影指定的坐标空间的原点。
使用之前的透视投影,您的原点可能位于屏幕中心。您可以通过更改正交投影中的值来回到这一点:
ortho(-(800.0f / 2.0f), 800.0f / 2.0f,
600.0f / 2.0f, -(600.0f / 2.0f),
-1000.0f, 1000.0f);
Run Code Online (Sandbox Code Playgroud)