Cocos2dx的截屏与遮罩

Cocos2dx的截屏与遮罩,第1张

概述Cocos2dx3.2截取精灵部分; bool HelloWorld::init() {     //////////////////////////////     if ( !Layer::init() )     {         return false;     }         Size visibleSize = Director::getInstance()->getVisib Cocos2dx3.2截取精灵部分;
bool HelloWorld::init()
{
//////////////////////////////

if ( !Layer::init() )
{
return false;
}

Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin(); Point ptMID = Point(visibleSize.wIDth/2,visibleSize.height/2); //////底
Sprite *girl5 = Sprite::create("1.jpg");
girl5->setposition(ptMID);
girl5->setScale(0.6); this->addChild(girl5); /////上层;
Sprite *cuve = Sprite::create("2.png");
cuve->setposition(ptMID);
this->addChild(cuve); cuve->setBlendFunc(BlendFunc{ GL_ONE,GL_SRC_Alpha }); //设置精灵混合模式; //////渲染;

RenderTexture *render2 = RenderTexture::create(visibleSize.wIDth,visibleSize.height);
render2->setposition(ptMID);
this->addChild(render2);
render2->begin();

girl5->visit();
cuve->visit(); render2->end();
render2->savetofile("fferrff1.png",kCCImageFormatPNG); //保存渲染器里渲出的精灵;

log(fileUtils::getInstance()->getWritablePath().c_str()); //存文件的路径; ///////////////////////////////////////
return true;
}

////////////////////////////////////////////////////////////////////////'

精灵颜色混合;

作用范围只是在精灵大小的方形区域;其它区域不受精灵的影响;

只分有颜色和没颜色(透明)两部分,不是用黑白来表示;

Sprite*pSprite3=Sprite::create ("e3.png");

BlendFuncbf; //混合结构体,只有下面两个数据成员;

bf.src=GL_ONE;//源;即精灵有颜色的部分;

bf.dst=GL_ONE;//目标;即精灵没有颜色的部分;

BlendFunc pSprite3= cuve->getBlendFunc();//默认 BlendFunc{GL_ONE,GL_ONE_MINUS_SRC_Alpha }

pSprite3->setBlendFunc(bf); //pSprite3->setBlendFunc (BlendFunc{GL_ONE, GL_ONE });

渲染是先渲染下面的精灵;然后渲染上面的;一个个精灵按顺序来;

只是自己和已经渲染的(可以看作是一张图);不要拿多个精灵来理解;

自己渲染时,自己作为源(自己有颜色的部分),已经渲染了的精灵作为目标(自己没有颜色的部分);

:

pSprite3->setBlendFunc (BlendFunc{GL_ONE, GL_ZERO });

//(自己有颜色的部分)全部显示;

//目标(自己没有颜色的部分)底图也不显示;

pSprite3->setBlendFunc (BlendFunc{GL_ZERO,GL_SRC_Alpha }); //遮罩效果

//(自己有颜色的部分)全部不显示;结果是底图显示;

//目标(自己没有颜色的部分)采用自己的透明度(0),结果是底图也不显示;

GL_ONE //有颜色的地方全显示;1

GL_ZERO //没颜色的地方全不显示;0

GL_SRC_Alpha //用源的透明;

GL_SRC_ color; //用源的颜色;

GL_ONE_MINUS_ SRC _color; //白色减源的颜色;

GL_ONE_MINUS_ SRC _Alpha; //白色减源的透明;

GL_ DST_Alpha;

GL_ DST_color;

GL_ONE_MINUS_ DST _color;

GL_ONE_MINUS_ DST _Alpha;

总结

以上是内存溢出为你收集整理的Cocos2dx的截屏与遮罩全部内容,希望文章能够帮你解决Cocos2dx的截屏与遮罩所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1045449.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存