这是个有着复杂答案的简单问题:
“为什么我的透明物体的绘制顺序不对, 或者有些不见了?”
当绘制一个3D场景时, 对图形进行深度排序是非常重要的, 这样离镜头近才画在远处物体的前面....为了达到好的结果, 大多数游戏是把三种方法结合起来使用的.
深度缓冲
深度缓冲简单而有效, 结果也很完美. 但是对于透明的物体它就无能为力了!
这是因为深度缓冲只记录了当前已经绘制的最近像素....它的局限性就是只适用于凸面体.
考虑一下一个简单的凸面体, 如一个球体或立方体. 无论你从哪个角度看, 每个屏幕上的像素都会被覆盖两遍: 一次是物体的前面, 一次是后面....哈哈, 如果每个屏幕上的像素只进行一次判断, 那你就自动得到了一个完美的混合结果, 没有必要排序任何东西.
当然, 大多数的游戏不会只画球体或立方体J 所以只是背面剔除的话不是一个妥善的解决方案....如果你有部分区域透明的纹理(如树叶), 并且图案边缘包含了一些半透明的像素用于反走样, 那你可以使用双pass渲染技术:
Pass 1: 绘制不透明部分: alpha混合关闭, alpha测试只接受100%