做程序开发肯定要考虑到内存的优化,毕竟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(,));

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

执行:

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

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

this->addChild(node);

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

plant->,));

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

//再创建一个精灵

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

plant1->,));

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->,));

node1->addChild(plant3);

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

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

plant4->,));

node1->addChild(plant4);

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

执行:

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

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

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

    我们知道.一个游戏少不了声音.一些好听的声音会提起你对游戏的兴趣,当然做好听的声音不是我们要学的,我们的目的是把声音在适当的时候放出来.顺便在这节中会说下简单的粒子系统和文件存储. 一.声音的播放: ...

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

    玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其他的植物仅仅需触摸那个植物将其拖入到想要摆放的位置,这事实上就是这节要写的触摸事件.还能够发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸, ...

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

    这次写一下精灵创建的几种类型: 一.通过文件创建: 在原有的基础上加入例如以下代码: //一.通过文件创建精灵 CCSprite *bg =CCSprite::create("map.png ...

  4. 【Cocos2D研究院之游戏开发】

    http://www.xuanyusong.com/archives/category/ios/cocos2d_game 分类目录归档:[Cocos2D研究院之游戏开发]   201211-19 Co ...

  5. 开发者经验谈:如何一天时间搞定iOS游戏开发?

    开发者经验谈:如何一天时间搞定iOS游戏开发? 在一天时间里将完成iPhone游戏开发由梦想变为现实? 本文作者给出了从创意转变成现实的详细答案.使用苹果原生游戏引擎SpriteKit,遵循一定的原则 ...

  6. 《MFC游戏开发》笔记六 图像双缓冲技术:实现一个流畅的动画

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9334121 作者:七十一雾央 新浪微博:http:/ ...

  7. iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面

    iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面 在1.2.2小节中提到过编辑界面(Interface builder),编辑界面是用来设计用户界面的,单击打开Main. ...

  8. ios游戏开发 Sprite Kit教程:初学者 1

    注:本文译自Sprite Kit Tutorial for Beginners 目录 Sprite Kit的优点和缺点 Sprite Kit vs Cocos2D-iPhone vs Cocos2D- ...

  9. 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星云 ...

随机推荐

  1. h5滚动条加载到底部

    https://www.zhihu.com/question/31861301 重复加载问题 http://www.jianshu.com/p/12aa901bee1f?from=timeline w ...

  2. angular.extend(dst,src)的简单示例

    自我认为这个方法跟angular.copy(src,dst)有点相似.在angular.extend({},src)时,就可以画等号.这个src只代表一个对象.代码如下:(注意这个src可以有多个对象 ...

  3. 修改Eclipse发布路劲(Deploy path)

    Eclipse默认的发布路劲在用户的workspace里,比较难找,为了方便查看,可以将发布路劲修改为自己想要的. 修改方法: 1.先stop Servers下tomcat里的项目,然后remove ...

  4. SQLSever 触发器

    /*DML触发器分为: 1. after触发器(之后触发) a. insert触发器 b. update触发器 c. delete触发器*/ /*UPDATE 触发器创建触发的语法*/ CREATE ...

  5. C++虚函数表解析(基础篇)

    原文:http://blog.csdn.net/haoel/article/details/1948051 一.简介  C++中的虚函数的作用主要是实现了多态的机制.虚函数(Virtual Funct ...

  6. MAC删除目录下的“.svn”文件的方法

    http://bbs.feng.com/read-htm-tid-7803070.html MAC删除目录的“.svn”文件:打开终端,进到所在的目录,然后出入一下代码find . -name &qu ...

  7. Linux中brk()系统调用,sbrk(),mmap(),malloc(),calloc()的异同【转】

    转自:http://blog.csdn.net/kobbee9/article/details/7397010 brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的:  ...

  8. C#实时读取数据----局部页面刷新【转】

    I)现在刚开始学习C#,对一些基本的控件了解的不够,有个实时监控的系统,需要页面中的数据每5秒钟刷新一次, 要是每5秒钟页面全部的刷新,那页面根本就没法看了,对这个问题在CSDN上也专门开了帖子,问了 ...

  9. poj 1873(枚举所有的状态+凸包)

    The Fortified Forest Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6115   Accepted: 1 ...

  10. 使用Sublime Text 3 编写python

    1,下载Sublime Text 3 链接:http://pan.baidu.com/s/1eROBpB0 密码:cqjr 2,安装 注意安装时去掉捆绑的软件安装选项,有两处. 3,安装完成打开软件, ...