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