osg BlendFunc來設定透明度

2022-04-09 07:13:12 字數 2073 閱讀 3573

osg::blendfunc介紹

混合是什麼呢?混合就是把兩種顏色混在一起。具體一點,就是把某一畫素位置原來的顏色和將要畫上去的顏色,通過某種方式混在一起,從而實現特殊的效果。

假設我們需要繪製這樣乙個場景:透過紅色的玻璃去看綠色的物體,那麼可以先繪製綠色的物體,再繪製紅色玻璃。在繪製紅色玻璃的時候,利用「混合」功能,把將要繪製上去的紅色和原來的綠色進行混合,於是得到一種新的顏色,看上去就好像玻璃是半透明的。

源因子和目標因子

下面用數學公式來表達一下這個運算方式。假設源顏色的四個分量(指紅色,綠色,藍色,alpha值)是(rs, gs, bs,  as),目標顏色的四個分量是(rd, gd, bd, ad),又設源因子為(sr, sg, sb, sa),目標因子為(dr, dg, db,  da)。則混合產生的新顏色可以表示為:

(rs*sr+rd*dr, gs*sg+gd*dg, bs*sb+bd*db, as*sa+ad*da)

dst_alpha

表示使用目標顏色的alpha值來作為因子。

dst_color

把目標顏色的四個分量分別作為因子的四個分量

one表示使用1.0作為因子,實際上相當於完全的使用了這種顏色參與混合運算

one_minus_dst_alpha

表示用1.0減去目標顏色的alpha值來作為因子。

one_minus_dst_color

表示用1.0減去目標顏色的顏色值來作為因子。

one_minus_src_alpha

表示用1.0減去源顏色的alpha值來作為因子。

one_minus_src_color

表示用rgb(1,1,1,1)減去源顏色的值來作為因子。

src_alpha

表示使用源顏色的alpha值來作為因子。

src_alpha_saturate

(f,f,f,1); f=min(as,1-ad)

src_color

把源顏色的四個分量分別作為因子的四個分量

constant_color

自定義的顏色作為因子

one_minus_constant_color

表示用rgb(1,1,1,1)減去自定義的顏色作為因子

constant_alpha

自定義的alpha作為因子

one_minus_constant_alpha

表示用1.0減去自定義顏色的alpha值來作為因子。

zero

表示使用0.0作為因子,實際上相當於不使用這種顏色參與混合運算。

更靈活的還有

osg::blendequation

常用的混合方程:

s,d表示因子(見osg::blendfunc),cs和cd表示源顏色和目標顏色

rgba_min

min(css,cdd)

rgba_max

max(css,cdd)

alpha_min

alpha_max

logic_op

func_add

css+cdd

func_subtract

css-cdd

func_reverse_subtract

cdd -css

**至

用ioclt 來設定路由

include include include include include include include int main char args memset route,0,sizeof route addr struct sockaddr in route.rt gateway addr s...

使用 em 來設定字型大小

如果要避免在 internet explorer 中無法調整文字的問題,許多開發者使用 em 單位代替 pixels。w3c 推薦使用 em 尺寸單位。1em 等於當前的字型尺寸。如果乙個元素的 font size 為 16 畫素,那麼對於該元素,1em 就等於 16 畫素。在設定字型大小時,em ...

通過Js來設定頁面樣式

我們可以在編輯html原始碼的時候將css樣式寫死到.css檔案或者html元素的style屬性中,但又時候可能會需要動態地來修改某個元素的樣式。我這裡介紹兩種方式 修改html元素的style屬性 動態載入link節點。在使用各種框架之前,必須要知道原生的js到底是怎麼寫的。這裡最直接的辦法就是 ...