Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 是否正确设置正交投影?_Opengl_Glm Math_Orthographic - Fatal编程技术网

Opengl 是否正确设置正交投影?

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),

最近我需要使用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,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)。