第四节 z-缓冲算法
     
      z—缓冲算法(深度缓冲算法)是一种最简单的图象空间算法。对每一个点,这个算法不仅需要有一个更新缓冲器存储各点的象素值,而且还需要有一个z—缓冲存储器存储相应的z值。帧缓冲存储器初始化为背景值,z缓冲存储器初始化为可以表示的最大z值。对每一个多边形,不必进行深度排序算法要求的初始排序,立即就可以逐个进行扫描转换。
    扫描转换时,对每个多边形内部的任意点(x,y),实施如下步骤:
    1. 计算在点(x,y)处多边形的深度值z(x,y)。
    2. 如果计算所得的z(x,y)值,小于在z—缓冲存储器中点(x,y)处记录的深度值,那么就做:
    (1)把值z(x,y)送入z—缓冲存储器的点处。
    (2)把多边形在深度z(x,y)处应有的象素值,送入更新缓冲存储器的点(x,y)处。
    算法中深度计算,可通过多边形的顶点坐标求出所在平面的方程,然后再使用平面方程,对每个点(x,y),解出相应的z。
    对面方程
    解出z是:
        
    设在点(x,y)处的深度值是z1:
        
    则在点(x+△x,y)处的深度值就是
        
    z—缓冲算法的工作流程:
    帧缓冲区置成背景色;
    z—缓冲区置成最大z值;
    for (各个多边形)
        { 扫描转换该多边形;
        for(计算多边形所覆盖的每个象素(x,y))
            { 计算多边形在该象素的深度值Z(x,y);
            if(Z(x,y)小于Z缓冲区中的(x,y)处的值)
            { 把Z(x,y)存入Z缓冲区中的(x,y)处;
                把多边形在(x,y)处的亮度值存入帧缓存区的(x,y)处;}
            }
        }
 
   
 
  第一节 线面比较法消除隐藏线
第二节 曲面隐藏线消除的浮动水平线算法
第三节 深度排序算法
第四节 z-缓冲算法 第五节 扫描线算法
第六节 区域分割算法
 
 
上一页 | 下一页