您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-X 显示不规则图片方法(遮罩)

2013-03-18 18:49 369 查看

cocos2d-X 显示不规则图片方法(遮罩)

2012-11-16 19:32:21

标签:不规则 cocos2dx 遮罩

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。/article/4564425.html

游戏中经常会使用一些mask, 来做遮罩,实现不规则图的显示,在cocos2d-x中

函数实现如下:

.h
static CCSprite* createMaskedSprite(CCSprite* src, const char* maskFile);


.cpp
CCSprite*  GOEUtilies::createMaskedSprite(CCSprite* src, const char* maskFile)
{
CCSprite * mask = CCSprite::create(maskFile);

assert(src);
assert(mask);

CCSize srcContent = src->getContentSize();
CCSize maskContent = mask->getContentSize();

CCRenderTexture * rt = CCRenderTexture::create(srcContent.width, srcContent.height, kTexture2DPixelFormat_RGBA8888);

float ratiow = srcContent.width / maskContent.width;
float ratioh = srcContent.height / maskContent.height;
mask->setScaleX(ratiow);
mask->setScaleY(ratioh);

mask->setPosition(ccp(srcContent.width / 2, srcContent.height / 2));
src->setPosition(ccp(srcContent.width / 2, srcContent.height / 2));

ccBlendFunc blendFunc2 = { GL_ONE, GL_ZERO };
mask->setBlendFunc(blendFunc2);
ccBlendFunc blendFunc3 = { GL_DST_ALPHA, GL_ZERO };
src->setBlendFunc(blendFunc3);

rt->begin();
mask->visit();
src->visit();
rt->end();

CCSprite * retval = CCSprite::createWithTexture(rt->getSprite()->getTexture());
retval->setFlipY(true);
return retval;
}


使用方法为:

GOEUtilies::createMaskedSprite(sprite,"mask.png");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: