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