cocos2d-x ios游戏开发初认识(六) 渲染的优化

做程序开发肯定要考虑到内存的优化,毕竟iphone本身的内存就不是非常大。这一节主要说这个cocos2d开发对内存的优化,详细表如今,既能够对同样的精灵(图片)仅仅渲染一次,也能够对不能的精灵仅仅渲染一次。

以下是程序的做法,先屏蔽前面的代码。

先简介一下 CCSpriteBatchNode类,它是用来优化游戏渲染效率的。CCSpriteBatchNode
中的全部CCSprite仅仅会被渲染1次,因此能够提高游戏的FPS。限制:增加到CCSpriteBatchNode
中的CCSprite必须使用同一张纹理图。

详细代码

CCSpriteBatchNode *node =CCSpriteBatchNode::create("Peashooter1.tiff");//先渲染文件

this->addChild(node);

CCSprite *plant = CCSprite::create("Peashooter1.tiff"); //创建精灵

plant->setPosition(ccp(300,300));

node->addChild(plant);                                  //加入到
node中

执行:

能够看到 加入一个精灵 此时的FPS为1。以下再加入一个文件同样精灵:

CCSpriteBatchNode *node =CCSpriteBatchNode::create("Peashooter1.tiff");//先渲染文件

this->addChild(node);

CCSprite *plant =
CCSprite::create("Peashooter1.tiff"); //创建精灵

plant->setPosition(ccp(300,300));

node->addChild(plant);                                  //加入到 node中

//再创建一个精灵

CCSprite *plant1 =
CCSprite::create("Peashooter1.tiff"); //创建精灵

plant1->setPosition(ccp(400,400));

node->addChild(plant1);

return
true;

执行:

能够看到两个精灵都被创建出来了,可是FPS还是为1。这就是CCSpriteBatchNode的作用,它保证加入到类里面全部同样文件的精灵仅仅被渲染一次。

既然同样的精灵能够仅仅渲染。那么不同的文件的精灵可不能够仅仅被渲染一次,答案是能够的。看以下的做法。

这时要用到第(五)篇文章讲的内容。详细做法是我们能够先把非常多种不同的图片合成一张大图,然后将这张大图加入到CCSpriteBatchNode中。这时渲染大图里面的小图都会仅仅被渲染一次,看详细程序做法:

///*假设想让不同图片仅仅渲染一次得要用到帧缓存机制渲染多个不同的图片 */

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("Person.plist"); //先缓存大图

CCSpriteBatchNode *node1 =CCSpriteBatchNode::create("Person.png");//渲染到一个大图片

this->addChild(node1);

CCSpriteFrame *frame =CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("本.png");

CCSprite *plant3 =CCSprite::createWithSpriteFrame(frame);

plant3->setPosition(ccp(200,200));

node1->addChild(plant3);

CCSpriteFrame *frame1 =CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("登.png");

CCSprite *plant4 =CCSprite::createWithSpriteFrame(frame1);

plant4->setPosition(ccp(500,500));

node1->addChild(plant4);

这个大图 全部小图片的名字:

执行:

我们能够看到又添加了两张图片。并且这两张图片不是一样的,可是FPS还是为2仅仅加了1,表示新添加的两个精灵仅仅被渲染了一次,如今我们发现帧缓存机制
是很强大的,在游戏开发中经经常使用到。

时间: 2024-10-09 22:52:42

cocos2d-x ios游戏开发初认识(六) 渲染的优化的相关文章

cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检测

玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其它的植物只需触摸那个植物将其拖入到想要摆放的位置,这其实就是这节要写的触摸事件.还可以发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸,当子弹与僵尸碰撞的时候子弹自动消失,这就这节要说的碰撞检测. 下面具体看代码的实现: 做ios开发有触摸事件cocos2d同样也有 一.先覆写touch事件 .h文件 using namespace cocos2d; class MainScene:public CCLayer { private: v

cocos2d-x ios游戏开发初认识(八) 音效、粒子系统与存储

我们知道,一个游戏少不了声音,一些好听的声音会提起你对游戏的兴趣,当然做好听的声音不是我们要学的,我们的目的是把声音在适当的时候放出来,顺便在这节中会说下简单的粒子系统和文件存储. 一.声音的播放: 1.新建一个cocos2d工程添加相应的声音图片资源: 播放声音所用到的内容: 代码: 这里可以先在RootViewController.mm里面设置屏幕 禁止旋转 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientat

cocos2d-x ios游戏开发初认识(五) CCsprite精灵类

这次写一下精灵创建的几种类型: 一.通过文件创建: 在原有的基础上添加如下代码: //一.通过文件创建精灵 CCSprite *bg =CCSprite::create("map.png"); CCSize winSize  =CCDirector::sharedDirector()->getWinSize(); //得到屏幕的尺寸 bg->setPosition(ccp(winSize.width/2, winSize.height/2)); this->addCh

cocos2d-x ios游戏开发初认识(七) 简单的动画

前面有一节说了帧动画,就是让精灵改变自己的位置.形状.大小来实现相应的动作,这讲主要是要通过一些方法来实现精灵的移动,产生各种炫丽的动画,也可能让你找到一点游戏场景. 下面具体根据代码分析: 为了清晰最好将前几节的代码注释掉. //根据前面的知识先创建一个菜单 CCMenuItemFont *item =CCMenuItemFont::create("开始游戏",this, menu_selector(MainScene::onMenuItem));//点击事件 //添加到菜单栏里面

cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检測

玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其他的植物仅仅需触摸那个植物将其拖入到想要摆放的位置,这事实上就是这节要写的触摸事件.还能够发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸,当子弹与僵尸碰撞的时候子弹自己主动消失,这就这节要说的碰撞检測. 以下详细看代码的实现: 做ios开发有触摸事件cocos2d相同也有 一.先覆写touch事件 .h文件 using namespace cocos2d; class MainScene:public CCLayer { privat

【Cocos2D研究院之游戏开发】

http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发] 201211-19 Cocos2D研究院之打开全新ViewController与返回(八) 雨松MOMO [Cocos2D研究院之游戏开发] 围观5745次 17条评论          之前cocos2d的文章都是由魏凯同学维护,从今天开始我也会抽时间写点cocos2d的文章.最近在研究如何将IOS游戏与软件结合起来.通常游

iOS 游戏开发 博客

1. http://www.cnblogs.com/kesalin/archive/2012/11/10/ios_game_dev_resource.html   ( iOS游戏开发教程) 最近几天仔细了解了iOS游戏开发引擎,常用的cocos2d,Unity引擎,那么Unity是非免费的,而cocos2d则是免费开源的: 最后促使我选择cocos2d的原因有两点: 1.最重要的原因是它对应的开发工具,尤其是 “ParticleDesigner”,粒子系统编辑器,非常的喜欢(需付费$7.99美元

史上最全最完整的IOS 游戏开发 PDF电子书定制下载

<iOS 5游戏开发>作者:(新西兰)James·Sugrue著 页数:191 出版社:北京市:人民邮电出版社 出版日期:2012.08 简介:<iOS5游戏开发>是一本iOS5游戏开发的基础入门书.全书使用通俗易懂的简单实例,带领读者经历构建经典动作游戏的整个周期.读者在本书的阅读过程中,将经历从开发概念.规划设计一直到编写实际代码的全过过程.本书的每一章,都将演示游戏创建过程中的一个逻辑步骤,读者将在其中学习如何创建Sprite,用触摸屏.重力感应器和屏幕游戏棒控制玩家角色等-

iOS游戏开发游戏功能之外的东西

对于一个游戏的开发,我们除了完成游戏的功能之外,还有多少东西我们需要考虑呢? 很多,也很烦! 但做过一遍之后下一次就会很简单. 都有什么东西我们想添加到游戏当中呢? (1)分享功能 (2)评分功能 (3)游戏中心(GameCenter) (4)广告(iAd以及其他广告比如Admob) (5)应用内购买 (6)... 这些功能并不是完全必要的,要根据情况考虑.但比如分享,评分,这些功能能提高一个游戏的扩散速度,显示是值得每一个游戏都添加的功能. 下面稍微总结一下每一个功能的基本用法. PS:这只是