Opengl变换 - 视角分裂混乱

时间:2013-07-07 20:42:54

标签: opengl transformation

我正在尝试通过阅读OpenGL Superbible来学习一些OpenGL基础知识。

我在第4章的开头,我对转换有疑问。

首先,相关链接:http://www.songho.ca/opengl/gl_transform.html

如果我理解这个管道(可以这么说),如果在我的代码中我会有类似的东西

const float vertexPositions[] = {
0.75f, 0.75f, 0.0f, 1.0f,
0.75f, -0.75f, 0.0f, 1.0f,
-0.75f, -0.75f, 0.0f, 1.0f,
};

这些坐标位于所谓的对象空间坐标中,我可以将每个值指定为[-1,1]范围内的某个值。

应用viewmodel矩阵后,每个顶点坐标可以是任意数字,那些坐标将在所谓的眼睛坐标中。

在应用投影矩阵(可以是透视投影)后,我们处于剪辑空间,但数字仍然可以有任何可能的值。

现在,我想知道这一点。在这个页面中,我们假设对于每个顶点x,y,z坐标,我们使用第四个值w,因为我们使用齐次坐标系,并且在除法后x,y,z[-1,1]范围内。

我的问题是,如何确保在完成所有这些转换之后w的值足够了,在x,y,z除以之后,我们将获得范围[-1,1]中的某些内容?

1 个答案:

答案 0 :(得分:2)

  

...对象空间坐标,我可以将每个值指定为[-1,1]范围内的某些内容。

您不受对象坐标范围的限制。

  

我的问题是,如何确保在所有这些变换之后,w的值足够了,在将x,y,z除以之后,我们将得到范围[-1,1]中的某些东西?

范围[-1,1]是转换后视口中的范围。该范围之外的所有内容都在视口之外,因此被剪裁。没有什么可以确保的。如果事物在范围内,它们是可见的,如果不是,它们就在视口窗口之外。