无限远处的顶点如何工作?

时间:2014-02-01 04:58:36

标签: opengl graphics

在此tutorial on shadow volumes处,无穷远处有必要的顶点。我理解无限远点的概念,我只是不明白它们如何与openGL一起工作。

如果顶点的w为0,则透视除法会发生什么?无穷远处的所有点是否都映射到NDC空间中-1到1范围边缘的某个点?这是如何实现的?

1 个答案:

答案 0 :(得分:3)

我不知道硬件内部如何工作,但这取决于您的投影矩阵。 我会尝试一个有希望的直观解释: 根据{{​​3}}中的透视投影矩阵 如果您的远平面处于有限距离,则任何具有w = 0的顶点将被剪掉,因为投影矩阵乘以(x,y,z,0)将导致[-1,1]之外的值。 阴影卷将缺少后盖并提供错误的结果(有限阴影卷可以解决此问题)。 如果您的远平面位于无穷远处,则投影矩阵将如下所示:

*  0  0  0
0  *  0  0
0  0 -1  *
0  0 -1  0

在透视分割之后,与(x,y,z,0)的乘法导致(*,*,z,z)=(*,*,1)。 z组件(阴影卷的后盖)现在位于[-1,1]内,并将被深度缓冲区捕获。

有关无限投影矩阵的更多信息:http://www.songho.ca/opengl/gl_projectionmatrix.html