簡介
深度快取算法(depth—buffer method)是一種常用的判定對象表面可見性的物空間算法,它在投影面上的每一像素位置比較場景中所有面的深度。由於通常沿著觀察系統的z軸來計算各對象距觀察平面的深度,該算法也稱為Z快取(z-buffer)算法。
算法描述
該算法需要兩個快取器,一個是用來存放顏色的顏色快取器,另一個是用來存放深度的深度快取器。利用深度快取器,可以進行可見性的判斷,消除隱藏對象。其具體做法是:
首先對深度快取器和顏色快取器進行初始化,把深度快取器中所有單元置成一個最大可能的深度值,把顏色快取器中各單元置成背景顏色。然後將場景中的物體不分次序地投影到象平面上去。對於每個投影點(象素),把投影物體在該點處的深度與深度快取器中相應位置上的深度值進行比較,如果前者小於後者,那么就把當前被投影物體的顏色寫到顏色快取器中去,同時用當前投影物體的深度去更新深度快取器中相應象素的深度,否則不做任何操作。
優缺點
深度快取算法中物體投影到象平面上的次序是任意的,無須將場景中的表面進行排序,物體之間的遮擋關係是通過深度快取器進行深度比較加以確定的,算法易於實現。
深度快取算法只能顯示距離視點最近的物體,而且這些物體都是不透明的,無法看到被遮擋的物體。
深度快取算法經常執行一些最終不起作用的中間計算過程。由於對象按任意次序進行處理,因此有些表面進行了顏色計算但事後又被更近的表面所代替。為了緩減這一問題,有些圖形軟體提供選項讓用戶調整表面測試的深度範圍。例如,通過深度測試排除較遠的對象。使用該選項還可以排除非常靠近投影平面的對象。高檔計算機圖形系統一般集成了深度快取算法的硬體實現。