OpenGL學(xué)習(xí)(三)—— 顏色混合

打開(kāi)混合

glEnable(GL_BlEND);

當(dāng)兩個(gè)圖層疊加,一個(gè)圖層是半透明,一個(gè)圖層是非半透明,就需要開(kāi)啟顏色混合,將兩個(gè)圖層的顏色進(jìn)行混合。

顏色是如何混合的(顏色混合方程式)

Cf = (Cs * S) + (Cd * D); //默認(rèn)混合方程式
Cf 最終計(jì)算出的顏色
Cs 源顏色
Cd 目標(biāo)顏色
S 源混合因子
D 目標(biāo)混合因子

假設(shè)進(jìn)來(lái)一個(gè)新的顏色是藍(lán)色(0.0, 0.0, 1.0, 0.6),要被替換掉的顏色是紅色(1.0, 0.0, 0.0, 1.0),那么

Cs(源顏色)= (0.0, 0.0, 1.0, 0.6)
Cd(目標(biāo)顏色)= (1.0, 0.0, 0.0, 1.0)
S = 源顏色alpha值 = 0.6
D = 1- S = 0.4
Cf = (Cs * S) + (Cd * D) = (藍(lán)色 * 0.6)+ (紅色 * 0.4)

設(shè)置混合因子

glBlendFunc(GLenum S,GLenum D);

自定義顏色混合方程式

glbBlendEquation(GLenum mode);//選擇混合方程模式
// glbBlendEquation(GL_FUNC_ADD); // 默認(rèn)方式

模式 函數(shù)
GL_FUNC_ADD Cf = (Cs * S) + (Cd * D)
GL_FUNC_SUBTRACT Cf = (Cs * S) - (Cd * D)
GL_FUNC_REVERSE_SUBTRACT Cf =(Cd * D)- (Cs * S)
GL_MIN min(Cs, Cd)
GL_MAX max(Cs, Cd)
常量混合顏色為黑色,glBlendColor可修改常量顏色

void glBlendColor(GLclampf red ,GLclampf green ,GLclampf blue ,GLclam pf alpha );

總結(jié)

  • 混合函數(shù)一般用于在一些不透明的圖形上加一個(gè)透明的圖形的效果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容