深度缓存(Z缓存)的研究
最近在shadow map过程中卡住了。因为我想在OpenGL ES 2.0兼容的平台上运行shadow map,而要顺利运行shadow map,通常的情况是拥有GL_OES_depth_texture扩展,而有些兼容的机器是没有这个扩展,这给我们开发人员带来了一些难度。不过办法还是有的,前提是要对计算机图形学的Z-Buffer要有一个深入的了解才行。
蒋彩阳原创文章,首发地址:http://blog.youkuaiyun.com/gamesdev/article/details/44939923。欢迎同行前来探讨。
参考维基百科上对Z-Buffer的介绍(这里第一个公式很可能是错误的,感觉是2far·near而不是-2far·near),当场景中的顶点在做MVP变换的时候,它的Z值也会受到相应的变化。这里我们尤其关注的是在视角空间下的顶点位置(Xe, Ye, Ze),在经过投影矩阵的变换时候会发生什么变化。
首先是根据投影矩阵,对顶点进行投影变换: