cocos2d-x 遮罩效果实现

本文介绍了一种使用Cocos2d-x引擎创建带遮罩效果的精灵的方法。通过调整遮罩图片的大小比例,并设置正确的混合函数,最终生成带有遮罩效果的新精灵。文中还提供了一个具体的调用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   

遮罩图片:白色


static   CCSprite*   createMaskedSprite(CCSprite* src, const char* maskFile, CCSize maskSize);



CCSpriteStartupGuideLayer::createMaskedSprite(CCSprite* src, const char* maskFile, CCSize maskSize)

{

    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 = maskSize.width / maskContent.width;

    float ratioh = maskSize.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;

}



调用例子:

        CCSprite  *  spriteGuide =  CCSprite::create(tempBuffer);

        spriteGuide =  StartupGuideLayer::createMaskedSprite(spriteGuide, "ui_mask_bai.png", m_size);


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值