【问题标题】:Setup Orthographic projection correctly?正确设置正交投影?
【发布时间】:2016-12-07 09:11:23
【问题描述】:

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

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

【问题讨论】:

  • 你的立方体有哪个坐标?

标签: opengl glm-math orthographic


【解决方案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);

【讨论】:

  • 我明白了,你完全正确。 glm::ortho 函数应该使用以下参数:-(screenwidth/2) 作为左侧,screenwidth/2 作为右侧,半屏高度作为底部,-(screenheight/2) 作为顶部。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-22
  • 2015-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
相关资源
最近更新 更多