osg 背面剔除

2021-08-28 11:01:18 字數 546 閱讀 6382

人們通常不認為背面剔除是一種排序技術,但事實上它是的確是一種重要的(排序)方法。它的侷限性在於僅僅適用於凸面體。

考慮乙個簡單的凸面體,比如乙個球體或乙個立方體。無論你從哪個角度觀察它,每乙個螢幕畫素都會被精確的覆蓋兩次:一次被物體的前面覆蓋,另一次是被它的背面覆蓋。如果使用背面剔除丟棄物體背面的三角麵片,那麼就只剩下前面的了。哈哈!如果每乙個螢幕畫素只被覆蓋一次,那你自動就會獲得完美的alpha blending結果,而不需要任何排序。

當然,大多數遊戲不會僅僅繪製球體或立方體:),所以背面剔除本身並不是乙個完整的解決方案。

結論:背面剔除對凸面體是完美的,但對於其它的就無能為力了。

實現

//設定背部剔除看不見背面東西

osg::ref_ptrcullface=new osg::cullface(osg::cullface::back);

state->setattribute(cullface.get());

state->setmode(gl_cull_face,osg::stateattribute::on);

openGl深度測試,剔除背面測試

include stdafx.h include include gl.h include glut.h 旋轉引數 static glfloat xrot 0.0f static glfloat yrot 0.0f 深度測試技術 bool bdepth false 剔除開關 bool bcull f...

DX中關於背面剔除概念的澄清

最近在渲染地形時發現把背面剔除模式設為ccw結果我的地形正面就顯示不出來了 知道是網格編織順序出了問題 但我記得我的網格是按順時針編織的 為了徹底將這一問題搞明白,去查了下dx 的sdk,結果發現裡面講得一團糟 上網搜了下,發現有不少人對這個問題也沒搞清楚.於是重新看了下andr lamothe的軟...

遊戲場景管理(三)背面剔除

在圖形渲染中有乙個很大的敵人就是渲染不必要的多邊形,比如處於背面的三角麵片。拿起一本數,無論你怎麼看最多也只能看到書的三個面,有的時候只能看到書的乙個面。看不到的面我們完全可以把它剔除掉,這門武功就叫做背面剔除。如果是軟光柵化,背面剔除通常在世界空間或相機空間中做,演算法很簡單如果平面的法線和視向量...