求cocos2d-x大神,这个ccBlendFunc怎么用?
答案:2 悬赏:30 手机版
解决时间 2021-11-15 22:46
- 提问者网友:嗝是迷路的屁
- 2021-11-15 09:21
求cocos2d-x大神,这个ccBlendFunc怎么用?
最佳答案
- 五星知识达人网友:零点过十分
- 2021-11-15 09:39
因为这个函数不是用来去黑底的,而是用来正片叠底的。
想要有效果就必须在HelloWorld.png下面再加一张不是黑色的背景图。
比如这样:
CCSprite* bg = CCSprite::create("bg.png");//白色或其他颜色的背景,黑色的会没效果
bg->setPosition(ccp(240, 160));
this->addChild(bg,0);
CCSprite* p = CCSprite::create("HelloWorld.png");
p->setPosition(ccp(240, 160));
this->addChild(p,1);
ccBlendFunc cb = { GL_ONE, GL_ZERO };
p->setBlendFunc( cb ) ;
想要有效果就必须在HelloWorld.png下面再加一张不是黑色的背景图。
比如这样:
CCSprite* bg = CCSprite::create("bg.png");//白色或其他颜色的背景,黑色的会没效果
bg->setPosition(ccp(240, 160));
this->addChild(bg,0);
CCSprite* p = CCSprite::create("HelloWorld.png");
p->setPosition(ccp(240, 160));
this->addChild(p,1);
ccBlendFunc cb = { GL_ONE, GL_ZERO };
p->setBlendFunc( cb ) ;
全部回答
- 1楼网友:从此江山别
- 2021-11-15 10:10
// 黑暗中的带背景图片纹理的光圈~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ZERO};
// 黑暗中的黄色光圈(前面表示upper,后面表示lower)~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ZERO};
// 黑暗中的黄色光圈(前面表示upper,后面表示lower)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_ALPHA, GL_ZERO};
// 默认的 blend 配置~
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// premultiplied~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE_MINUS_SRC_ALPHA};
// 仅背景图片有所显示~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE};
// 黄色光圈区域亮度加强(2倍的强度)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_SRC_COLOR};
// 正片叠底~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 类似柔光:黄色光圈区域亮度加强,其他地方也不会显示为纯黑(接近我想要的想过了)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE};
// Screen~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE_MINUS_DST_COLOR, GL_ONE};
// Linear Dodge~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE};
// 很类似柔光效果,这个也最接近我的需求了~
ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE};
// GL_ONE_MINUS_SRC_ALPHA 注定是不行的(光晕中心会被模糊掉)~
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// 标准的正片叠底~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 下面两种是差不多的~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_SRC_COLOR};
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ZERO};
// 黑暗中的带背景图片纹理的光圈~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ZERO};
// 黑暗中的黄色光圈(前面表示upper,后面表示lower)~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ZERO};
// 黑暗中的黄色光圈(前面表示upper,后面表示lower)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_ALPHA, GL_ZERO};
// 默认的 blend 配置~
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// premultiplied~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE_MINUS_SRC_ALPHA};
// 仅背景图片有所显示~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE};
// 黄色光圈区域亮度加强(2倍的强度)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_SRC_COLOR};
// 正片叠底~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 类似柔光:黄色光圈区域亮度加强,其他地方也不会显示为纯黑(接近我想要的想过了)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE};
// Screen~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE_MINUS_DST_COLOR, GL_ONE};
// Linear Dodge~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE};
// 很类似柔光效果,这个也最接近我的需求了~
ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE};
// GL_ONE_MINUS_SRC_ALPHA 注定是不行的(光晕中心会被模糊掉)~
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// 标准的正片叠底~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 下面两种是差不多的~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_SRC_COLOR};
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ZERO};***************************************************************************************************************
[cpp]
// 1.正片叠底
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 2.
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// 3.黄色光圈区域显示背景图片,其他区域显示黑色(黄色光圈很柔和)~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_SRC_ALPHA};
// 4.背景图片在黄色光圈区域的图片尤为阴暗~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE_MINUS_SRC_ALPHA};
// 5.仅仅显示出了原始的背景图片~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_DST_ALPHA};
// 6.全黑~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE_MINUS_DST_ALPHA};
// ----------------------------------------
// 7.仅显示黄色光圈图片~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ZERO};
// 8.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE};
// 9.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_DST_COLOR};
// 10.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE_MINUS_DST_COLOR};
// 11.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_SRC_ALPHA_SATURATE};
// 12.黄色光圈区域显示背景图片,其他区域显示黑色(黄色光圈很刺眼)~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_SRC_ALPHA};
// 13.
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_COLOR, GL_DST_COLOR};
// 1.正片叠底
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 2.
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// 3.黄色光圈区域显示背景图片,其他区域显示黑色(黄色光圈很柔和)~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_SRC_ALPHA};
// 4.背景图片在黄色光圈区域的图片尤为阴暗~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE_MINUS_SRC_ALPHA};
// 5.仅仅显示出了原始的背景图片~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_DST_ALPHA};
// 6.全黑~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE_MINUS_DST_ALPHA};
// ----------------------------------------
// 7.仅显示黄色光圈图片~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ZERO};
// 8.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE};
// 9.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_DST_COLOR};
// 10.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE_MINUS_DST_COLOR};
// 11.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_SRC_ALPHA_SATURATE};
// 12.黄色光圈区域显示背景图片,其他区域显示黑色(黄色光圈很刺眼)~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_SRC_ALPHA};
// 13.
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_COLOR, GL_DST_COLOR};
更多 0追问我不是要你复制的东西。。
谢谢
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ZERO};
// 黑暗中的黄色光圈(前面表示upper,后面表示lower)~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ZERO};
// 黑暗中的黄色光圈(前面表示upper,后面表示lower)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_ALPHA, GL_ZERO};
// 默认的 blend 配置~
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// premultiplied~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE_MINUS_SRC_ALPHA};
// 仅背景图片有所显示~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE};
// 黄色光圈区域亮度加强(2倍的强度)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_SRC_COLOR};
// 正片叠底~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 类似柔光:黄色光圈区域亮度加强,其他地方也不会显示为纯黑(接近我想要的想过了)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE};
// Screen~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE_MINUS_DST_COLOR, GL_ONE};
// Linear Dodge~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE};
// 很类似柔光效果,这个也最接近我的需求了~
ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE};
// GL_ONE_MINUS_SRC_ALPHA 注定是不行的(光晕中心会被模糊掉)~
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// 标准的正片叠底~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 下面两种是差不多的~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_SRC_COLOR};
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ZERO};
// 黑暗中的带背景图片纹理的光圈~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ZERO};
// 黑暗中的黄色光圈(前面表示upper,后面表示lower)~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ZERO};
// 黑暗中的黄色光圈(前面表示upper,后面表示lower)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_ALPHA, GL_ZERO};
// 默认的 blend 配置~
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// premultiplied~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE_MINUS_SRC_ALPHA};
// 仅背景图片有所显示~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE};
// 黄色光圈区域亮度加强(2倍的强度)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_SRC_COLOR};
// 正片叠底~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 类似柔光:黄色光圈区域亮度加强,其他地方也不会显示为纯黑(接近我想要的想过了)~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE};
// Screen~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE_MINUS_DST_COLOR, GL_ONE};
// Linear Dodge~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE};
// 很类似柔光效果,这个也最接近我的需求了~
ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE};
// GL_ONE_MINUS_SRC_ALPHA 注定是不行的(光晕中心会被模糊掉)~
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// 标准的正片叠底~
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 下面两种是差不多的~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_SRC_COLOR};
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ZERO};***************************************************************************************************************
[cpp]
// 1.正片叠底
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 2.
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// 3.黄色光圈区域显示背景图片,其他区域显示黑色(黄色光圈很柔和)~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_SRC_ALPHA};
// 4.背景图片在黄色光圈区域的图片尤为阴暗~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE_MINUS_SRC_ALPHA};
// 5.仅仅显示出了原始的背景图片~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_DST_ALPHA};
// 6.全黑~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE_MINUS_DST_ALPHA};
// ----------------------------------------
// 7.仅显示黄色光圈图片~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ZERO};
// 8.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE};
// 9.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_DST_COLOR};
// 10.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE_MINUS_DST_COLOR};
// 11.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_SRC_ALPHA_SATURATE};
// 12.黄色光圈区域显示背景图片,其他区域显示黑色(黄色光圈很刺眼)~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_SRC_ALPHA};
// 13.
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_COLOR, GL_DST_COLOR};
// 1.正片叠底
// ccBlendFunc tmp_oBlendFunc = {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA};
// 2.
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
// 3.黄色光圈区域显示背景图片,其他区域显示黑色(黄色光圈很柔和)~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_SRC_ALPHA};
// 4.背景图片在黄色光圈区域的图片尤为阴暗~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE_MINUS_SRC_ALPHA};
// 5.仅仅显示出了原始的背景图片~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_DST_ALPHA};
// 6.全黑~
// ccBlendFunc tmp_oBlendFunc = {GL_ZERO, GL_ONE_MINUS_DST_ALPHA};
// ----------------------------------------
// 7.仅显示黄色光圈图片~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ZERO};
// 8.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE};
// 9.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_DST_COLOR};
// 10.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_ONE_MINUS_DST_COLOR};
// 11.纯粹的添加光圈图片到背景图片上面~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_SRC_ALPHA_SATURATE};
// 12.黄色光圈区域显示背景图片,其他区域显示黑色(黄色光圈很刺眼)~
// ccBlendFunc tmp_oBlendFunc = {GL_ONE, GL_SRC_ALPHA};
// 13.
// ccBlendFunc tmp_oBlendFunc = {GL_SRC_COLOR, GL_DST_COLOR};
更多 0追问我不是要你复制的东西。。
谢谢
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯