Cocos2dx的截屏与遮罩

前端之家收集整理的这篇文章主要介绍了Cocos2dx的截屏与遮罩前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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;

原文链接:https://www.f2er.com/cocos2dx/344123.html

猜你在找的Cocos2d-x相关文章