2 回答

TA貢獻1712條經(jīng)驗 獲得超3個贊
我個人理解:
兩個參數(shù)的取值都可以是如下常量之一:
GL_ZERO, GL_ONE, GL_DST_COLOR, GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA, and GL_SRC_ALPHA_SATURATE
比如GL_ZERO表示alpha取值為0,GL_ONE表示1,GL_DST_COLOR表示取目標(biāo)區(qū)域的顏色值,GL_SRC_ALPHA表示取源區(qū)域的alpha值等等。例如:
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
表示把渲染的圖像疊加到目標(biāo)區(qū)域,也就是說源的每一個像素的alpha都等于自己的alpha,目標(biāo)的每一個像素的alpha等于1。這樣疊加次數(shù)越多,疊加的圖元的alpha越高,得到的結(jié)果就越亮。因此這種融合用于表達光亮效果。
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
表示把渲染的圖像融合到目標(biāo)區(qū)域。也就是說源的每一個像素的alpha都等于自己的alpha,目標(biāo)的每一個像素的alpha等于1減去該位置源像素的alpha。 因此不論疊加多少次,亮度是不變的。
如此等等。自己試一試才會明白。
這個函數(shù)是制作很多特技效果的核心,變幻無窮,我這里說的只是皮毛,要完整地理解就必須看官方文檔(MSDN就是一個很全面的文檔),英語不好也要硬看,其實誰剛開始看的時候都會頭疼,看多了英語自然就練出來了...

TA貢獻1806條經(jīng)驗 獲得超8個贊
glBlendFunc 定義像素算法。
在 RGB 模式下可以使用混合使用幀緩沖區(qū) (目標(biāo)值) 中已有的 RGBA 值傳入的 (源) RGBA 值的函數(shù)繪制像素為單位)。 默認情況下,混合處于禁用狀態(tài)。 啟用和禁用混合使用 glEnable glDisable GL_BLEND 參數(shù)。
當(dāng)啟用,glBlendFunc 定義混合的操作。 sfactor 參數(shù)指定的九個方法,用于擴展源顏色分量。 dfactor 參數(shù)指定的八個方法,用于擴展目標(biāo)顏色分量。 十一個可能的方法是在下表中所述。 每個方法定義四個規(guī)模因素 — — 為紅色、 綠色、 藍色和阿爾法各一個。
在表中和隨后方程中,在源和目標(biāo)顏色組件被稱為 (R s ,G s 、 B s , s ) 和 (R d ,G d 、 B d , d )。 他們被理解為是具有零之間的整數(shù)值和 (k R 、 k G 、 k R 、 k A ),其中
kR = 2 m R-1
kG = 2 m G-1
kB = 2 m B-1
kA = 2 m A-1
和 (m R 、 m G 、 m B 、 m A ) 是紅色綠色、 藍白 alpha bitplanes 數(shù)。
- 2 回答
- 0 關(guān)注
- 209 瀏覽
添加回答
舉報