看書籍或資料往往還是雲裡霧裡的,這裡寫一下自己的理解。希望對需要的人有幫助。
簡而言之:
模板緩衝區和幀緩衝區一樣大
模板緩衝區初始狀態是什麼?
在glclearbuffer的時候清空,所以初始狀態是全為0。
模板測試什麼時候進行?
每一次你呼叫繪製函式的時候都會進行模板測試。一次繪製後,畫素著色器會輸出畫素,這個畫素是否寫入到顏色緩衝區,取決於模板測試。
新畫素的模板值:本次繪製產生的影象 ,根據每個畫素是否有內容或是否被更新,都有乙個模板值與之對應。凡是有畫素點的地方,畫素點的模板值為1;沒有畫素點的地方,模板值為0。
新畫素的模板值和模板緩衝區對應位置的舊值進行一次運算,就叫模板測試,具體的運算規則可以通過glstencilfunc來配置。在配置的運算規則下,若通過,則畫素會被寫到顏色緩衝區中,即將被重新整理到螢幕中;若不通過,則此畫素會被直接丟棄,不會更新到螢幕中。
模板緩衝區什麼時候被更新?
模板緩衝區更新需要開啟開關glenable(gl_depth_test)。
模板測試完成後,進行模板緩衝區更新。
更新操作具體怎樣進行,和模板測試的結果有關,可以通過函式glstencilop來配置,成功時寫入什麼,失敗時寫入什麼。
最後說一句:
模板緩衝區就是乙個過濾網,就是用來過濾畫素的。
OpenGL 模板測試
1,模板實現裁剪例項 include gltools.h include else define freeglut static include endif define yellowmat 1 define bluemat 2 void init void glfloat yellow specu...
OpenGL(十四) 模板測試
啟用模板測試時,opengl會在記憶體中開闢一塊空間作為模板緩衝區,裡邊儲存了每個畫素的 模板值 模板測試的過程就是把每乙個畫素的模板值與乙個設定的模板參考值進行比較,符合設定條件的通過測試,不符合條件的則不會繪製。glclearstencil函式用來指定模板值復位後的初始值,跟使用glclearc...
OpenGL(14) 模板測試
啟用模板測試時,opengl會在記憶體中開闢一塊空間作為模板緩衝區,裡邊儲存了每個畫素的 模板值 模板測試的過程就是把每乙個畫素的模板值與乙個設定的模板參考值進行比較,符合設定條件的通過測試,不符合條件的則不會繪製。glclearstencil函式用來指定模板值復位後的初始值,跟使用glclearc...