在计算机图形学中,画家的算法被称为Z-Sorting
有时它更快,有时则不然。这取决于您有多少个对象、您渲染的分辨率有多大以及Z您需要的坐标精度。
Z-Buffering更适合:
高对象/多边形数量
动态场景(物体或相机正在移动/旋转)
它需要与渲染图像具有相同分辨率的额外缓冲区,并且它对每个片段执行单个条件(每个多边形的渲染像素,甚至是看不见的像素)。渲染后,每个可见像素的3D z坐标均可使用,这是许多高级渲染技术所必需的。
Z-Sorting更适合:
(相对)静态场景或非常低的对象/多边形数量
如果可用内存很少(在 8 位计算机上,大多数3D应用程序都使用Z-sorting,因为没有内存Z-buffer)
它需要索引缓冲区来存储所有对象/多边形索引,并且它对每个场景更改执行排序(按 Z 坐标对许多对象进行排序可能会很慢)。现在使用它的原因是:
透明多边形需要Z排序
如果程序由于其他原因已经有 Z 排序场景,那么它会利用它
有时这两种技术结合在一起
特别是对于高动态范围的Z坐标,因为标准 Z 缓冲区(24/32 位宽)在整个范围内的分辨率非常差。它可以通过使用线性或对数标度来部分解决Z-buffer,但如果您需要在整个范围内定义精度/分辨率,则需要使用某种与 Z 排序的组合并将更多平截头体组合在一起或使用Z-Buffer具有高动态范围的自定义当前硬件不支持