Z-Buffer算法:

�Z-Buffer算法()
��{
����for (i=0,1,…,m)
����for (j=1,…,n)
���{
����用背景色初始化帧缓存CB:CB(i,j)=背景色;
����用最小Z值初始化深度缓存:ZB(i,j)=Zmin;
���}
���for(每一个多边形)
���{ 将该多边形进行投影变换;
����扫描转换该多边形在视平面上的投影多边形;
����for(该多边形所覆盖的每个象素(i,j) )
����{ 计算该多边形在该象素的深度值Zi,j
������if(Zi,j > ZB(i,j)
������{
�������ZB(i,j) = Zi,j
��������计算该多边形在该象素的颜色值Ci,j
��������CB(i,j)= Ci,j
������}
�����}
����}
��}


��利用多边形内的点在水平和垂直方向上的相关性,可以得到计算多边形的点及其深度值的算法步骤:
��1) 将多边形的边按其y最小值排序,搜索多边形中各顶点的y值,找出其中最小的值ymin和最大值ymax;
��2) 令扫描线从y=ymaxymin以增量为1变化,依次对每条水平线进行扫描:
����(a) 找出与当前扫描线相交的所有边,利用垂直相关性求出这些边与扫描线
������的交点,并将这些交点Qi(i=0,1,…,m)x坐标从小到大排序;
����(b) for(i=0,1,…,m /2)
������{�������
从第一个交点Q2i开始,利用多边形上点的水平相关性,即公式(7-4-1),计算出后继点的深度值,直到Q2i+1为止;
������}
��深度缓存算法以离视点近的物体的投影取代离视点远的物体的投影,各个面出现的先后顺序是无关紧要的。它不用对物体进行排序,只需对平面进行扫描转换,因此有利于硬件实现。深度缓存算法最突出的缺点是两个缓存占用的存储空间太大。但是,随着目前计算机硬件的高速发展,Z缓冲器算法已被硬件化,这个问题也就随之消失。目前,几乎所有的三维图形显示加速卡都支持深度缓存算法,它已经成为最常用的一种消隐方法。