例(7-5-2)
扫描线Z-buffer算法()
�{
��1) 对每个多边形求取其顶点中所含的y的最小值ymin和最大值ymax,按ymin进行排序,将多边形置入多边形y桶;
��2) 活化多边形表APT,活化边表AET初始化为空;
��3) For(每条扫描线i,i从小到大)
��{
���(1) 帧缓存CB置为背景色;
���(2) 深度缓存ZB置为负无穷大(因为视方向为Z轴的负方向);
���(3) 将多边形y桶中对应扫描线i的新的多边形加入到活化多边形表APT中;
���(4) 对新加入的多边形,生成其相应的边Y桶;
���(5) 对APT中每一个多边形,若其边Y桶中对应扫描线i增加了新的边,则将新的边配对,加到活化边对表AET中;
���(6) for(AET中的每一对边)
�����{
������for (每一个满足xl <j < xr的象素j)
������{
��������d = z +Δzl; //深度depth
��������if (d > ZB(i,j))
��������{
���������ZB(i,j) =d;
���������计算当前象素点的颜色值c;
���������写帧缓存CB(i,j)=c;
��������}
�������}
������}

��(7) 删除APT中多边形顶点最大y坐标为i的多边形,并删除相应的边;
��(8) for (活化边表AET中的每一个边对)
����{
������if (ylmax=i && yrmax=i) 删除ylmax和yrmax已等于i的边对;
������else if (ylmax或yrmax 已等于i)
������{
��������删除ylmax或yrmax 已等于i的边;
��������对该多边形的边重新配对;
������}
������//用增量公式计算新的xlxrzl
��� ��xl=xl+Δxl;
���� xr=xr+Δxr;
���� zl=zl+Δxl Δzl +Δz ;
����}
��}
�}