Cocos2d-x利用CCSpriteBatchNode提高渲染效率

CCSpriteBatchNode介绍:


1、先说下渲染批次:这是游戏引擎中一个比较重要的优化指标,指的是一次渲染凋用。也就是说,渲染的次数越少,游戏的运行效率越高。

2、CCSpriteBatchNode就是cocos2d-x为了降低渲染批次而建立的一个专门管理精灵的类。


举例介绍:

1、使用CCSprite创建1000个Icon.png到场景中,这样渲染批次就是1000(暂且不考虑其他的精灵)
for(int i = 0;i <1000;++i){
        int x = arc4random()�0;
        int y = arc4random()d0;
        CCSprite* testIcon =CCSprite::create("Icon.png");
        testIcon->setPosition( ccp(x, y) );
        addChild(testIcon);
}
效果图如下:


上面的效果图可以看到,创建了1000个Icon到场景中,这是的FPS是22,渲染批次是1000次


2、使用CCSpriteBatchNode批量渲染,一次渲染就把所有的CCSprite绘制出来。大大降低渲染批次。


举例介绍:

1、使用CCSprite创建1000个Icon.png到场景中,但是这里利用了CCSpriteBatchNode批量渲染。这时的渲染批次、FPS如何呢?

 

CCSpriteBatchNode* batchNode= CCSpriteBatchNode::create("Icon.png", 1000);

batchNode->setPosition(CCPointZero);

this->addChild(batchNode);

   

for(int i = 0;i <1000;++i){

       int x =arc4random()�0;

       int y =arc4random()d0;

       CCSprite*testIcon =CCSprite::createWithTexture(batchNode->getTexture());

      testIcon->setPosition( ccp(x, y) );

      batchNode->addChild(testIcon);

}

效果图如下:


上面的效果图可以看到,创建了1000个Icon到场景中,这是的FPS是39.9,渲染批次是1次
注:
1、CCSpriteBatchNode::create(const char*fileImage);//利用贴图创建,默认子节点数量29.(数量不够时,系统会自己增加)

CCSpriteBatchNode* batchNode = CCSpriteBatchNode::create(const char*fileImage, unsigned int capacity);//利用贴图创建,并指定子节点数量


2、使用CCSpriteBatchNode时,所使用的贴图必须是同一张图片,也不能指定精灵的深度。所有的精灵都必须在同一渲染层。


3、但是项目中总不可能局限于一张贴图上,所以你可以把多张贴图合并成一张大贴图(合并的工具很多,我不介绍了)。所以利用合成后的大贴图创建一个CCSpriteBatchNode。

然后创建CCSprite的时候,设置贴图的区域就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值