C++ 中的 Z 缓冲区或深度缓冲区法
Z 缓冲区又称为深度缓冲区,是一种用于隐面检测的方法。
隐面检测
对于任何具有透明对象和 Oberflächen的图片。在此情况下,其他对象后面的对象是隐藏的。为了正确查看图像,我们需要移除这些隐藏的表面。该识别称为隐面问题。
在 Z 缓冲区中,我们将沿着 Z 轴将表面作为深度进行比较。
算法
Step 1: initialize the depth of all pixel max. d(i,j) = infinity Step 2: Initialize color for all pixels. c(i,j) = background-color Step 3: for each pixel in polygon projection do, Step 3.1: find z i.e. depth of projection’s (i,j) pixel. Step 3.2: if z < d(i,j) do Step 3.2.1 : d(i,j) = z and c(i,j) = color of polygon.
利用这种方法,我们逐个像素查找平面的每个像素的深度。最小的表面决定了缓冲区的颜色。通常,所有 z 值都接近 [0,1] 的范围。
Z=0,背面剪裁平面和 Z=1,正面剪裁平面。
Z 缓冲区的一些重要点
要应用 Z 缓冲区方法,不需要对多边形(平面)进行初始排序。
即使平面的数量很大,Z 缓冲区也能提供快速的结果。
Z 缓冲区方法不需要进行对象比较。
使用这种方法也可以检测到非多边形的隐藏对象。
不需要其他数据结构来存储和解决问题。
可以实施硬件来加速处理过程,并且积极用于解决图形工作站的问题。
该方法仅可用于考虑的不透明对象,即透明对象可能会出现错误。
绘制隐藏表面可能是一个耗时的过程。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP