Z缓冲算法何时需要画家的算法?

时间:2016-12-30 14:26:45

标签: render zbuffer

据我的老师说,在某些情况下,Z-buffer算法需要画家的算法在2D图像中渲染3D场景。

我认为Z缓冲算法是一个扩展,一个画家的增强:对我来说,Z缓冲算法可以做画家能够做的所有事情,甚至更多(交集)多边形和循环重叠)。

但是,在某些情况下,如果没有使用画家的话,Z缓冲算法无法正常工作......这些情况是什么?

2 个答案:

答案 0 :(得分:0)

来自wiki

的至少一个原因
  

该算法的这些和其他缺陷导致了Z缓冲技术的发展,通过逐个像素地解决深度冲突,可以将其视为画家算法的发展,减少了对a的需求。基于深度的渲染顺序。即使在这样的系统中,有时也会使用画家算法的变体。由于Z缓冲区实现通常依赖于在硬件中实现的固定精度深度缓冲寄存器,因此存在由于舍入误差导致的可见性问题。这些是多边形之间的关节处的重叠或间隙。 为了避免这种情况,一些图形引擎实现“过度渲染”,按照画家算法给出的顺序绘制两个多边形的受影响边缘。这意味着一些像素实际上被绘制两次(如完整画家的算法) )但这只发生在图像的一小部分上,并且具有可忽略的性能影响。

答案 1 :(得分:0)

我能想象的唯一情况是使用透明度时,因为当使用的透明度方法需要排序时,Z缓冲区不起作用。假设已经绘制了一个前期图元,并且已经填充了Z缓冲区,那么随后绘制的图元将被跳过。在对图纸进行排序时,您可以从后往前绘制。