日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cocos2d中使用颜色混合:加算,减算

發(fā)布時(shí)間:2025/5/22 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cocos2d中使用颜色混合:加算,减算 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Cocos2d中使用顏色混合:加算,減算

轉(zhuǎn)自http://blog.sina.com.cn/s/blog_7a2ffd5c0100xtid.html

CCSprite有一個(gè)ccBlendFunc類型的blendFunc_結(jié)構(gòu)體成員,可以用來設(shè)置描繪時(shí)的顏色混合方案。ccBlendFunc包含了一個(gè)src和一個(gè)dst,分別表示目標(biāo)和源的運(yùn)算因子。

????如果我們對(duì)一個(gè)Sprite使用setBlendFunc方法,如:

?????????????[Sprite setBlendFunc:(ccBlendFunc){GL_ONE,GL_ZERO} ];

????會(huì)以這個(gè)Sprite作為源,Sprite所在位置的其它像素作為目標(biāo),進(jìn)行混合運(yùn)算:

????????源的RGBA變量:RsGsBsAs

????????目標(biāo)的RGBA??RdGdBdAd

????????源的各個(gè)運(yùn)算因子:??N_RsN_GsN_BsN_As

????????目標(biāo)的各個(gè)運(yùn)算因子:???N_RdN_GdN_BdN_Ad

混合后的RGBA為:(Rs*N_Rs+ Rd* N_RdGs*N_Gs+ Gd* N_Gd

????????????????????????????????Bs*N_Bs+ Bd* N_BdAs*N_As+ Ad* N_Ad)

???其中的運(yùn)算因子包括:

?????????GL_ONE1.0

?????????GL_ZERO0.0

?????????GL_SRC_ALPHA:源的Alpha值作為因子

?????????GL_DST_ALPHA:目標(biāo)Alpha作為因子

?????????GL_ONE_MINUS_SRC_ALPHA1.0減去源的Alpha值作為因子

?????????GL_ ONE_MINUS_DST_ALPHA1.0減去目標(biāo)的Alpha值作為因子

?

????我們可以在CCSpriteinit方法中看到,默認(rèn)的狀態(tài)下使用GL_ONE,GL_ONE_MINUS_SRC_ALPHA這兩個(gè)參數(shù),這也是我們看到的情況,Sprite會(huì)覆蓋下面的描繪,但如果有透明的地方,則會(huì)顯示下面的色值。讓我們看一下說使用各個(gè)參數(shù)的效果:

????0:不改變混合,使用默認(rèn)的情況:
?????

????1:如果設(shè)置glBlendFunc(GL_ONE,GL_ZERO),?表面完全使用源顏色,即和不混合一樣的效果,但是如果Sprite本身有透明的地方,則透明的地方會(huì)變成黑色。因?yàn)榇藭r(shí)不顯示目標(biāo)的顏色。即使透明度為0也沒有意義。

????2:如果設(shè)置glBlendFunc(GL_ZERO, GL_ONE),表示不使用源顏色,那么該Sprite便不被畫出來。
??

????3:使用ALPHA相關(guān)的因子,會(huì)根據(jù)透明度來計(jì)算,比如透明度高的顏色占較大比重等。如默認(rèn)情況。

?附:

常數(shù)相關(guān)因子融合因子結(jié)果
GL_ZERO源因子或目的因子(0,0,0,0)
GL_ONE源因子或目的因子(1,1,1,1)
GL_DST_COLOR源因子(Rd,Gd,Bd,Ad)
GL_SRC_COLOR目的因子(Rs,Gs,Bs,As)
GL_ONE_MINUS_DST_COLOR源因子(1,1,1,1)-(Rd,Gd,Bd,Ad)
GL_ONE_MINUS_SRC_COLOR目的因子(1,1,1,1)-(Rs,Gs,Bs,As)
GL_SRC_ALPHA源因子或目的因子(As,As,As,As)
GL_ONE_MINUS_SRC_ALPHA源因子或目的因子(1,1,1,1)-(As,As,As,As)
GL_DST_ALPHA源因子或目的因子(Ad,Ad,Ad,Ad)
GL_ONE_MINUS_DST_ALPHA源因子或目的因子(1,1,1,1)-(Ad,Ad,Ad,Ad)
GL_SRC_ALPHA_SATURATE源因子(f,f,f,1); f=min(As,1-Ad)
posted on 2013-09-23 03:57 linyawen 閱讀(...) 評(píng)論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/linyawen/p/3334156.html

總結(jié)

以上是生活随笔為你收集整理的Cocos2d中使用颜色混合:加算,减算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。