OpenGL的幾種快取

2021-06-06 13:08:02 字數 1729 閱讀 5131

螢幕是由乙個個具有顏色的微小正方形組成的,這微小正方形稱為畫素。為了在螢幕上顯示三維場景,最終必須將三維模型分解成許許多多的畫素,這個過程就是光柵化。當繪製光柵化得到的畫素時,我們需要顏色及其它輔助資訊,opengi.為螢幕上所有象素的每種資訊的集合都提供了一塊儲存區域,這種儲存區域稱為「快取」(buffer)。根據快取中包含的資訊型別可以將它分為以下4類:

·顏色快取(color buffer)

包含每個象素的顏色資訊。顏色資訊可以是顏色索引值(在顏色索引方式下),也可以是顏色的紅、綠、藍3個分量(在rgba方式下),還可以存放表示物體透明程度的alpha值。

·深度快取(depth buffer)

包含每個象素的深度值。深度值與z座標有關,描述物體上某點距離觀察點的遠近,也可以稱它為z快取(z buffer) 。

·模板快取(stencil buffer)

包含物體的模板值。模板值具有遮蔽作用,用於控制繪製的區域,使螢幕上某些區域可畫,某些區域不可畫。

·累積快取(accumulation buffer)

包含顏色資訊。其可以合成一系列的繪製結果,實現某些特殊效果。

一、顏色快取和alpha測試

為了在螢幕上顯示場景,就必須將場景寫入顏色快取,所以顏色快取是最常用的快取。一般情況下,有兩種顏色快取:前快取(front buffer)和後快取(back buffer),其中前快取可見(不可缺少),後快取不可見。開發者可以在後快取中繪製場景,將繪製結果寫入前快取顯示,由於繪製過程不可見,便實現了實時動畫。

在為opengl.中,光柵化得到的象素並不一定顯示在螢幕上,它被稱為「顆粒"(fragment ) 。顆粒必須通過一系列測試才能顯示。這裡首先介紹alpha測試,該測試可以確保不透明物體先畫,透明物體後畫,從而正確繪製出透明物體。

alpha測試比較顆粒的alpha值和乙個參考值的大小。滿足測試條件的顆粒通過該測試,進入下一步測試;未滿足條件的不再顯示。

二、深度快取和深度測試

深度快取儲存象素的深度值,深度值描述象素距離觀察點的遠近。一般情況下,深度值較大的象素會被深度值較小的象素覆蓋,因為距離觀察點遠的物體總是被距離近的物體遮擋。使用深度快取和深度測試可以在硬體級實現消隱。

深度測試比較顆粒的深度值和需寫入的象素已有的深度值。滿足測試條件的顆粒通過測試,進入下一級測試;未滿足條件的顆粒不再顯示,即被遮擋。

深度快取和深度測試的使用是相當靈活的。當我們需要重複乙個很複雜、精度很高的背景時,與其重畫該背景,不如將它存為一幅具有深度的影象,這樣可以提高繪製的速度。

三、模板快取和模板測試

模板快取存放象素的模板值。因為模板值用於控制象素是否可以被改寫,所以模板快取用於控制螢幕上哪些區域可畫,哪些區域禁止畫,從而實現高階剪裁。

模板測試比較需寫入的象素已有的模板值和乙個參考值的大小。滿足測試條件的,允許顆粒進入下一級測試;未滿足條件的不再顯示。通過模板測試,可以繪製多個幾何體的交集,也可以實現特殊地剪裁。

使用模板測試還可以實現駕駛**中表盤的繪製,這樣可以保證場景不出現在表盤之上。

這裡總結一下各種測試的順序,依次是:alpha測試、模板測試、深度測試。

四、累積快取

累積快取可以積累一系列的繪製結果並合成它們,它可以用來實現場景的全域性反走樣、運動模糊和對焦效果。

畫直線和多邊形時,可能出現不應有的鋸齒,我們稱這種現象為「走樣」。通過使用累積快取,可以模糊整個場景的邊界,使鋸齒變得不明顯,我們稱實現了場景的全域性反走樣。

OpenGL的幀快取

本文參考的是 opengl程式設計權威指南 也就是傳說中的 紅寶書 一 快取的分類 1.顏色快取 指程式設計師繪圖所用的快取,分為 左 右快取 用於立體感檢視 必須要有左快取 前 後快取 用於雙快取 必須要有前快取 4個輔助快取 可選擇的 不可顯示 程式設計師可以自己定義和使用它們 2.深度快取 用...

OpenGL中的幀快取

一 快取的分類 1.顏色快取 指程式設計師繪圖所用的快取,分為 左 右快取 用於立體感檢視 必須要有左快取 前 後快取 用於雙快取 必須要有前快取 4個輔助快取 可選擇的 不可顯示 程式設計師可以自己定義和使用它們 2.深度快取 用來儲存每個象素的深度值,也稱為z快取。3.模板快取 可以將作圖限制在...

OpenGL幀快取和動畫

17.1 幀快取 螢幕上所繪的圖形都是由象素組成的,每個象素都有乙個固定的顏色或帶有相應點的其它資訊,如深度等。因此在繪製圖形時,記憶體中必須為每個象素均勻地儲存資料,這塊為所有象素儲存資料的記憶體區就叫緩衝區,又叫快取 buffer 不同的快取可能包含每個象素的不等數字的資料,但在給定的乙個快取中...