电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

Z缓冲区(ZBuffer)算法VIP免费

Z缓冲区(ZBuffer)算法_第1页
1/7
Z缓冲区(ZBuffer)算法_第2页
2/7
Z缓冲区(ZBuffer)算法_第3页
3/7
第二章 光栅图形学 2.7 消隐 消除隐藏面 Z 缓 冲区(Z-Buffer)算法 画家算法中,深度排序计算量大,而且排序后,还需再检查相邻的面,以确保在深度优先级表中前者在前,后者在后。若遇到多边形相交,或多边形循环重叠的情形,还必须分割多边形。为了避免这些复杂的运算,人们发明了 Z 缓冲区(Z-Buffer)算法。在这个算法里,不仅需要有帧缓存来存放每个象素的颜色值,还需要一个深度缓存来存放每个象素的深度值。 图2.7.11 Z 缓冲区示意图 Z 缓冲器中每个单元的值是对应象素点所反映对象的z 坐标值。Z 缓冲器中每个单元的初值取成 z 的极小值,帧缓冲器每个单元的初值可放对应背景颜色的值。图形消隐的过程就是给帧缓冲器和 Z 缓冲器中相应单元填值的过程。在把显示对象的每个面上每一点的属性(颜色或灰度)值填入帧缓冲器相应单元前,要把这点的z 坐标值和 z 缓冲器中相应单元的值进行比较。只有前者大于后者时才改变帧缓冲器的那一单元的值,同时z 缓冲器中相应单元的值也要改成这点的z 坐标值。如果这点的z 坐标值小于z 缓冲器中的值,则说明对应象素已经显示了对象上一个点的属性,该点要比考虑的点更接近观察点。对显示对象的每个面上的每个点都做了上述 处 理 后,便 可得 到消除 了隐藏 面的图。 Z-Buffer 算法 Z-Buffer 算法() { 帧缓存全置为背景色 深度缓存全置为最小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-Buffer 算法在象素级上以近物取代远物。形体在屏幕上的出现顺序是无关紧要的。这种取代方法实现起来远比总体排序灵活简单,有利于硬件实现。然而Z-Buffer 算法存在缺点:占用空间大,没有利用图形的相关性与连续性。 Z-Buffer算法以算法简单著称,但也以占空间大而闻名。一般认为,Z-Buffer 算法需要开一个与图象大小相等的缓存数组 ZB,实际上,可以改进算法,只用一个深度缓存变量 zb。 多面体消隐的改进深度缓存算法 Z-Buffer() { 帧缓存全置为背景色 //扫描整个屏幕 for(屏幕上的每个象素(i,j)) { 深度缓存变量 zb 置最小值MinValue for(多面体上的每个多边形Pk) { if(象素点(i,j)在pk 的投影多边形之内) { 计算Pk 在(i,j)处...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

Z缓冲区(ZBuffer)算法

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部