cocos2d-x 调色
在游戲開發。我們須要實現閃光的燈。照明彈效果等等,我么你能夠採用混合模式來實現。
假設學習過OpenGL(ES),就知道里面使用glBlendFunc函數實現的。在cocos2d-x里肯定也有,對于精靈。能夠使用mySprite->setBlendFunc()來現。
什么是顏色混合?
簡單來說就是將RGBA中的A,經行操作處理。詳細一點。就是把某一像素位置原來的顏色和將要畫上去的顏色,通過某種方式混在一起,從而實現特殊的效果。
OpenGL 會把源顏色和目標顏色各自取出,并乘以一個系數(源顏色乘以的系數稱為“源因子”。目標顏色乘以的系數稱為“目標因子”),然后相加。這樣就得到了新的顏 色。
(也能夠不是相加,新版本號的OpenGL能夠設置運算方式,包含加、減、取兩者中較大的、取兩者中較小的、邏輯運算等,但我們這里為了簡單起見,不討 論這個了)
如果源顏色的四個分量(指紅色。綠色。藍色,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)
glBlendFunc有兩個參數,前者表示源因子,后者表示目標因子。這兩個參數能夠是多種值,以下介紹比較經常使用的幾種。
GL_ZERO:?????表示使用0.0作為因子,實際上相當于不使用這樣的顏色參與混合運算。
GL_ONE:??????表示使用1.0作為因子。實際上相當于全然的使用了這樣的顏色參與混合運算。
GL_SRC_ALPHA:表示使用源顏色的alpha值來作為因子。
GL_DST_ALPHA:表示使用目標顏色的alpha值來作為因子。
GL_ONE_MINUS_SRC_ALPHA:表示用1.0減去源顏色的alpha值來作為因子。
GL_ONE_MINUS_DST_ALPHA:表示用1.0減去目標顏色的alpha值來作為因子。
以下舉一個樣例:
[cpp]?view plaincopy
看到,這個小人的光光頭有種被點亮的感覺
使用混色,加動畫,你可以實現一些非常酷的效果。
總結
以上是生活随笔為你收集整理的cocos2d-x 调色的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Node.js与Sails~Model数
- 下一篇: UVA 12166 Equilibriu