Opengl转换-透视图划分混乱



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

我在第四章的开头,我有一个关于转变的问题。

一是相关环节: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]范围内的值。

在应用视图模型矩阵后,每个顶点坐标可以是任何数字,这些坐标将在所谓的眼睛坐标中。

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

现在我想知道的是。在本页中,据说对于每个顶点x,y,z坐标,我们将其除以第四个值w,这是因为我们使用齐次坐标系,并且在除法之后,x,y,z在范围[-1,1]中。

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

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

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

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

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

最新更新