Opengl 是否正确设置正交投影?
最近我需要使用glm库使用正交投影。但是使用正交投影,我的场景不会在视口的中心进行渲染 我的场景只是一个立方体,使用glm::perspective可以很好地渲染。我不懂太多的数学知识,我只是使用glm::ortho函数 那么,我需要如何正确设置正交投影呢 以下是我所做的代码:Opengl 是否正确设置正交投影?,opengl,glm-math,orthographic,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),
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,0,0)由正交投影指定的坐标空间的
在之前的透视投影中,屏幕中心可能有一个原点。通过更改正交投影中的值,您可以返回到这一点:
ortho(-(800.0f / 2.0f), 800.0f / 2.0f,
600.0f / 2.0f, -(600.0f / 2.0f),
-1000.0f, 1000.0f);
立方体显示在屏幕的左上角,因为这是正交投影指定的坐标空间的原点
(0,0,0)
在之前的透视投影中,屏幕中心可能有一个原点。通过更改正交投影中的值,您可以返回到这一点:
ortho(-(800.0f / 2.0f), 800.0f / 2.0f,
600.0f / 2.0f, -(600.0f / 2.0f),
-1000.0f, 1000.0f);
你的立方体有哪些坐标?你的立方体有哪些坐标?我知道了,你完全正确。glm::ortho函数应该使用:-(screenwidth/2)作为左参数,screenwidth/2作为右参数,半屏幕高度作为底部,-(screenheight/2)作为顶部参数。我知道了,你完全正确。glm::ortho函数应使用以下参数:左为-(screenwidth/2),右为screenwidth/2,下为半屏幕高度,上为-(screenheight/2)。