个性化阅读
专注于IT技术分析

计算机图形Z缓冲区算法

本文概述

它也称为深度缓冲算法。深度缓冲算法是最简单的图像空间算法。对于显示屏上的每个像素, 我们都会记录最靠近观察者的像素内对象的深度。除了深度, 我们还记录了应该显示以显示对象的强度。深度缓冲区是帧缓冲区的扩展。深度缓冲算法需要2个数组, 强度和深度分别由像素坐标(x, y)索引。

算法

对于屏幕上的所有像素, 将深度[x, y]设置为1.0, 并将强度[x, y]设置为背景值。

对于场景中的每个多边形, 找到投影到屏幕上时位于多边形边界内的所有像素(x, y)。对于以下每个像素:

(a)计算在(x, y)处的多边形的深度z

(b)如果z <深度[x, y], 则该多边形比已经为该像素记录的其他多边形更靠近观察者。在这种情况下, 将深度[x, y]设置为z, 将强度[x, y]设置为对应于多边形阴影的值。如果取而代之的是z>深度[x, y], 则已经记录在(x, y)处的多边形比该新多边形更靠近观察者, 并且不采取任何操作。

3.毕竟, 多边形已经过处理;强度阵列将包含解。

4.深度缓冲算法说明了所有隐藏表面算法共有的几个功能。

Z缓冲区算法

5.首先, 在这种情况下, 它需要表示场景多边形中所有不透明的表面。

6.这些多边形可能是场景模型中记录的多面体的面, 也可能只是场景中不透明的薄“薄片”。

7.该算法的第二个重要特征是它使用屏幕坐标系。在步骤1之前, 使用矩阵乘法将场景中的所有多边形转换为屏幕坐标系。

深度缓冲区的局限性

  1. 由于深度和强度阵列的巨大尺寸, 深度缓冲算法并不总是实用的。
  2. 生成具有500 x 500像素的栅格的图像, 每个阵列需要2个50, 000个存储位置。
  3. 即使帧缓冲器可以为强度阵列提供存储空间, 深度阵列仍然很大。
  4. 为了减少所需的存储量, 可以将图像分为许多较小的图像, 然后将深度缓冲算法依次应用于每个图像。
  5. 例如, 可以将原始的500 x 500更快地划分为100个栅格, 每个栅格50 x 50像素。
  6. 处理每个小栅格仅需要2500个元素的数组, 但是执行时间会增加, 因为每个多边形要处理多次。
  7. 屏幕的细分并不总是会增加执行时间, 而是可以帮助减少生成图像所需的工作。由于屏幕小区域之间的连贯性, 导致出现这种减少。

赞(1)
未经允许不得转载:srcmini » 计算机图形Z缓冲区算法

评论 抢沙发

评论前必须登录!