深度写开关 ZWrite
深度写开关 ZWrite,控制是否将来自对象的片元深度值 z 写入深度缓冲,默认开启。
如果绘制不透明物体,设置为 On (默认)
如果绘制半透明物体,设置为 Off
| 半透明物体,它需要进行深度测试,然后进行alpha混合,但是不必对深度缓冲进行写操作,否则半透明物体后边的不透明物体看上去就是是被半透明物体“挖空”了,并且alpha混合应该也会受到影响 |
|---|
深度测试 ZTest
深度测试 ZTest,
是为了使距离摄像机近的物体遮挡住距离摄像机远的物体,确保场景看起来是正确的。
当片元写入到帧缓冲之前,需要将待写入的片元的深度值z 与 深度缓冲区对应的深度值进行比较测试,只有测试成功才会写入帧缓冲。
默认情况都会进行深度测试,LEqual(默认),实现距离摄像机近的物体遮挡住距离摄像机远的物体。(深度值z小于或等于深度缓冲区对应的深度值的片元,写入帧缓冲)
| 深度测试模式 (与深度缓冲中的对应z值进行对比) ZTest xxx |
|---|
| LEqual ,小于等于,默认情况 |
| Less、Greater、GEqual、Equal、NotEqual (一般导致显示不正确) |
| Always ,总是渲染,相当于关闭深度测测试 |
ZTest、ZWrite 大致关系应该如下所示
深度写入,将片元深度值z写入到深度缓冲,
这里的片元,应该是说 开启深度写开关的那些物体中,经过深度测试,片元深度值z 与深度缓冲中的数值进行对比,如果满足条件,才会写入。