Cocos2dx对精灵的优化
cocos2dx针对游戏设计的不同方面会有不同的优化方案,可以对声音,对内存,对图片格式,对色彩等等进行优化。有关这些方面的方法请大家查找其他的文章。我今天要说的是如何对精灵进行优化,程序中我们用到的最多的就是精灵,大到背景、UI,小到 NPC、道具,只要是用图片展示的,都是精灵或它的子类。精灵是什么,在我看来精灵就是一张纹理图片,是按某种方式显示出来的图片。精灵如此的重要,我们当然要好好的优化优化了。我们可以减小精灵图片的大小,使用缓存Cache的方法将精灵提前加载到内存中,当有很多精灵的时候,使用批次渲染的方法。所以我就从缓存和批次渲染这俩个方面来说一下如何优化我们的精灵图片。
1、通过批次渲染的方法来优化精灵。在游戏中的某一时刻,有时候会用到大量的精灵,比如说发射子弹,粒子效果,这些精灵图片所使用的纹理都是相同的,如果一张一张的图片进行渲染势必会降低效率,大家在开发中看到的窗口的左下角的三行数字中,第一行数字就是渲染批次,这个渲染批次在我看来就是画了多少次,cocos2dx中使用opengl进行绘图,渲染的批次越少当然越好了,所以这个渲染批次才会显示在左下角让我们参考。我们应当尽量的减小这个渲染的批次,提高游戏的效率。方法就是使用CCSpriteBatchNode和CCParticleBatchNode精灵批节点类和粒子批节点类。先来看看在代码中如何使用它们。
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
//创建了十个精灵将这十个精灵添加到当前的层中
for(int i=0;i<10;i++)
{
CCSprite * sprite = CCSprite::create("icon.png");
sprite->setPosition(ccp(CCRANDOM_0_1()*visibleSize.width,CCRANDOM_0_1()*visibleSize.height));
this->addChild(sprite);
}
```

上边的这种情况是采用一般的方式将精灵添加到层中的,这个时候的渲染批次是10。
//创建一个CCSpriteBatchNode,传入的参数就是精灵们将要用到的图片
CCSpriteBatchNode * batchNode = CCSpriteBatchNode::create("icon.png");
//或者使用texture2d初始化,里边传入一个texture
//CCSpriteBatchNode * batch = CCSpriteBatchNode::createWithTexture();
//这一句写不写都可以,因为node的默认坐标就是(0,0)
batchNode->setPosition(CCPointZero);
for(int i=0;i<10;i++)
{
//创建的这些精灵所使用的纹理必须和CCSpriteBatchNode相同,而且所有这些精灵必须在同一个渲染层
CCSprite * sprite = CCSprite::createWithTexture(batchNode->getTexture());
sprite->setPosition(ccp(CCRANDOM_0_1()*visibleSize.width,CCRANDOM_0_1()*visibleSize.height));
batchNode->addChild(sprite);
}
this->addChild(batchNode);
```

采用上边的方法添加精灵到层中,渲染批次是1,就是因为我们用到了CCSpriteBatchNode这个类,从道理上来说,这个类也是一个node,通常我们使用node的时候就是为了方便的管理精灵,创建一个node节点,然后将精灵放到这个节点中,而node本身是没法显示出来的,显示出来的东西是放到它里边的node子节点,node的长和宽都是0,坐标默认是在父节点的左下角也就是原点处。所以对子节点位置的设置不会产生影响。CCSpriteBatchNode就是这样的一个node,不同的是创建的时候需要一个纹理,要不怎么叫sprite node呢?里边传入的纹理图片是子节点用到的纹理图片,我们可以设置好这些子精灵节点的坐标,然后添加到这个node中,这个node再添加到其他的层中,这样就可以批次渲染了。这个node要求它的字精灵节点和它使用相同的纹理,那如果纹理不一样怎么办,那就把纹理都打包到一张图片上,用的时候从这张图片上截取,工具可以使用texturepacker。
http://t.sohu.com/p/u/1855401830
http://t.sohu.com/p/u/1855402050
http://t.sohu.com/p/u/1855402120
http://t.sohu.com/p/u/1855402192
http://t.sohu.com/p/u/1855401754
http://dlbdfngzh.t.sohu.com/
http://dlbdfzjyy.t.sohu.com/
http://dlzhdbdfyy.t.sohu.com/
http://dlzbdfnh.t.sohu.com/
http://dlzlbdfdyy.t.sohu.com/
http://t.sohu.com/p/u/1854738522
http://t.sohu.com/p/u/1855401788
http://t.sohu.com/p/u/1854738588
http://t.sohu.com/p/u/1855401968
http://t.sohu.com/p/u/1855402060
http://tlnlkbdfh.t.sohu.com/
http://tlzlbdfnjxgh.t.sohu.com/
http://tlzlbdfzjzh.t.sohu.com/
http://tlzlbdfnjh.t.sohu.com/
http://tlzlbdfqn.t.sohu.com/
http://t.sohu.com/p/u/1855402006
http://t.sohu.com/p/u/1855270468
http://t.sohu.com/p/u/1855270540
http://t.sohu.com/p/u/1855275252
http://t.sohu.com/p/u/1855402500
http://t.sohu.com/p/u/1855402588
http://t.sohu.com/p/u/1855275880
http://t.sohu.com/p/u/1855402722
http://cyzlbdfzkyy.t.sohu.com/
http://chaoyazbdfhdzkyy.t.sohu.com/
http://cyzlbdfhdzkyy.t.sohu.com/
http://cyzlbdfbjhdyy.t.sohu.com/
http://cyzlbdflxhdyy.t.sohu.com/
http://cyzlbdfzjyy.t.sohu.com/
http://cyzlbdfzyxyy.t.sohu.com/
http://cyzlbdfzqwyy.t.sohu.com/
http://t.sohu.com/p/u/1854678020
http://t.sohu.com/p/u/1854678222
http://t.sohu.com/p/u/1855402388
http://t.sohu.com/p/u/1855279532
http://t.sohu.com/p/u/1855279680
http://jzzbdfyy.t.sohu.com/
http://jzzbdfdyy.t.sohu.com/
http://jzzbdfnjh.t.sohu.com/
http://jzbdfnjzh.t.sohu.com/
http://jzhdbdfyy.t.sohu.com/
http://zhongyi.sina.com/zx/news/292426.shtml
http://zhongyi.sina.com/zx/news/292424.shtml
http://zhongyi.sina.com/zx/news/292422.shtml
http://zhongyi.sina.com/zx/news/292419.shtml
http://zhongyi.sina.com/zx/news/292418.shtml
http://zhongyi.sina.com/zx/news/292417.shtml
http://zhongyi.sina.com/zx/news/292416.shtml
http://zhongyi.sina.com/zx/news/292414.shtml
http://zhongyi.sina.com/zx/news/292412.shtml
http://zhongyi.sina.com/zx/news/292411.shtml
http://zhongyi.sina.com/zx/news/292410.shtml
http://zhongyi.sina.com/zx/news/292408.shtml
http://zhongyi.sina.com/zx/news/292404.shtml
http://zhongyi.sina.com/zx/news/292402.shtml
http://zhongyi.sina.com/zx/news/292401.shtml
http://zhongyi.sina.com/zx/news/292400.shtml
http://zhongyi.sina.com/zx/news/292399.shtml
http://zhongyi.sina.com/zx/news/292396.shtml
http://zhongyi.sina.com/zx/news/292395.shtml
http://zhongyi.sina.com/zx/news/292394.shtml
http://t.sohu.com/p/u/1855402420
http://t.sohu.com/p/u/1855402646
http://t.sohu.com/p/u/1855402730
http://t.sohu.com/p/u/1855402834
http://t.sohu.com/p/u/1855402886
http://thzlbdfbjhdzkyy.t.sohu.com/
http://thzlbdflxhdyy.t.sohu.com/
http://thzlbdfzkyy.t.sohu.com/
http://thzlbdfzyxyy.t.sohu.com/
http://thzlbdfqwyy.t.sohu.com/