透视视角下利用depthTest和depthWrite控制物体前后遮挡关系,优化渲染层次感
https://easyv.cloud/c/article/10206.html
二、深度测试(depthTest)
深度测试是一种机制,它决定了一个像素是否可见。当一个新的像素需要被绘制时,其深度值会与深度缓冲中的当前值进行比较。根据比较结果的不同,采取不同的行动:
- 小于:如果新像素的深度值小于缓冲区中的值,说明新像素更靠近视点,应被绘制,并更新深度缓冲。
- 大于:如果新像素的深度值大于缓冲区中的值,表明该像素位于其他对象之后,应被丢弃。
- 等于:某些情况下,相等也可能导致像素被丢弃,具体取决于深度测试函数的设置。
深度测试有效地解决了图形渲染中的遮挡问题,确保了后绘制的近景覆盖前景,避免了不必要的重叠绘制,提高了渲染效率。
三、深度写入(depthWrite)
深度写入控制着新绘制的像素是否更新深度缓冲。这是一个布尔选项,可以设置为开启或关闭:
- 开启:每次绘制操作都会更新深度缓冲,即使像素最终没有被显示(例如,因为颜色测试失败)。这对于大多数情况是必要的,以保持深度信息的准确性。
- 关闭:即使新像素被绘制,也不会更新深度缓冲。这意味着,即便新像素实际上在其他物体后面,也会显示出来,产生特殊的视觉效果,如半透明物体的正确排序和叠加