正在加载图片...
屏幕 帧缓冲器 Z缓冲器 ◆◆◆◆◆ ◆◆◆◆◆◆ ◆◆◆◆◆◆◆ 每个单元存放对应 每个单元存放对应 象素的颜色值 象素的深度值 图2.7.11Z缓冲区示意图 Z缓冲器中每个单元的值是对应象素点所反映对象的z坐标值。Z缓冲器中每个单元的初值取成z 的极小值,帧缓冲器每个单元的初值可放对应背景颜色的值。图形消隐的过程就是给帧缓冲器和Z缓 冲器中相应单元填值的过程。在把显示对象的每个面上每一点的属性(颜色或灰度)值填入帧缓冲器 相应单元前,要把这点的z坐标值和z缓冲器中相应单元的值进行比较。只有前者大于后者时才改变 帧缓冲器的那一单元的值,同时z缓冲器中相应单元的值也要改成这点的z坐标值。如果这点的z坐 标值小于z缓冲器中的值,则说明对应象素已经显示了对象上一个点的属性,该点要比考虑的点更接 近观察点。对显示对象的每个面上的每个点都做了上述处理后,便可得到消除了隐藏面的图。 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-BufferO 帧缓存全置为背景色 //扫描整个屏幕 for(屏幕上的每个象素(i,j)) 深度缓存变量zb置最小值 Minvalue图 2.7.11 Z 缓冲区示意图 Z 缓冲器中每个单元的值是对应象素点所反映对象的 z 坐标值。Z 缓冲器中每个单元的初值取成 z 的极小值,帧缓冲器每个单元的初值可放对应背景颜色的值。图形消隐的过程就是给帧缓冲器和 Z 缓 冲器中相应单元填值的过程。在把显示对象的每个面上每一点的属性(颜色或灰度)值填入帧缓冲器 相应单元前,要把这点的 z 坐标值和 z 缓冲器中相应单元的值进行比较。只有前者大于后者时才改变 帧缓冲器的那一单元的值,同时 z 缓冲器中相应单元的值也要改成这点的 z 坐标值。如果这点的 z 坐 标值小于 z 缓冲器中的值,则说明对应象素已经显示了对象上一个点的属性,该点要比考虑的点更接 近观察点。对显示对象的每个面上的每个点都做了上述处理后,便可得到消除了隐藏面的图。 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
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有