在此教程上,在阴影卷上,无穷大时有必要的顶点。我了解无限的点的概念,我只是不明白它们如何与OpenGL一起使用。
如果顶点的w是0,则在透视图中会发生什么?无穷大的所有点是否映射到NDC空间中-1至1范围的边缘的某个点?如何实现?
我不知道硬件在内部工作原理,但取决于您的投影矩阵。我将尝试一个直观的解释:根据http://www.songho.ca/opengl/gl_proctionsmatrix.html的透视投影矩阵如果您的远面平面在有限的距离处,则任何带有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.terathon.com/gdc07_lengyel.pdf