[cocos2d-x]用CCSpriteBatchNode进行文理贴图的优化

简介:

引言:

我们在进行手机游戏开发的过程中,由于手机的内存资源是有限的,那么对纹理贴图的优化是非常有必要的,有可能相同的功能,优化的好与不好对内存资源的消耗是非常明显的,下面我就用一个例子来说明一下。

说明:

cocos2d-x游戏开发过程中,左下角的三个参数对我们游戏开发者来说,是非常重要的三个参数指标。第一个是场景中精灵的渲染次数,该数字越大说明越耗资源,我们尽量让这个数字越小越好。第二个数字是每帧之间的时间间隔。第三个参数是每秒调用的帧数,尽量让它保持在60左右,显得游戏是最流畅的。

操作说明:

我在场景中随机生成100个相同的精灵,看看两种不同的效果。

操作步骤:

1.没有优化之前

代码:

for (int i=0; i<100; i++) {         CCSprite *sp = CCSprite::create("Icon.png");                  int x = arc4random()%480;         int y = arc4random()%320;                  sp->setPosition(CCPointMake(x, y));         this->addChild(sp);     }

效果:


2.优化了之后

代码:

CCSpriteBatchNode* batchNode = CCSpriteBatchNode::create("Icon.png", 10);     batchNode->setPosition(CCPointZero);     this->addChild(batchNode);          for (int i=0; i<100; i++) {         CCSprite *sp = CCSprite::create("Icon.png");                  int x = arc4random()%480;         int y = arc4random()%320;                  sp->setPosition(CCPointMake(x, y));         batchNode->addChild(sp);     }

效果:



效果对比:

优化了之后,明显的看的出第一幅图第一个参数是1000,也就是说精灵渲染了1000次,这是比较消耗资源的。第二幅图,第一个参数只渲染一次。 还有就是由于模拟器调用的是PC的内存所以内存比较大,对第三个参数是不会有多大的影响的,但如果是真机调试的话效果会很明显,第一种情况会明显的比较卡。

















本文转蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366274,如需转载请自行联系原作者
相关文章
|
存储 SQL 关系型数据库
什么是数据库存储过程?
【8月更文挑战第3天】
2182 11
什么是数据库存储过程?
|
JavaScript 前端开发
nodejs下ueditor文件上传时csurf与contentType冲突问题
表单提交时 form submit 直接就可以提交了,但是了防止跨站攻击,都可以加入CSRF来防御。
1216 0
|
关系型数据库 MySQL 数据库
180620-mysql之数据库导入导出
实际工作中,需要做一下数据库迁移,需要导入导出数据,记录一下mysqldump的简单用法
156 0
180620-mysql之数据库导入导出
|
网络协议 测试技术 Go
多重继承介绍|学习笔记
快速学习多重继承介绍
|
Linux
linux 目录md5校验-校验
linux 目录md5校验-校验
429 0
|
JavaScript Java Maven
如何访问jar包下面的资源文件
如何访问jar包下面的资源文件
212 0
|
Web App开发 开发者
Web开发者最想要的20款Chrome拓展
译文链接:http://www.oschina.net/news/16299/20-most-wanted-chrome-extensions
774 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 7 章 查询_7.6. LIMIT和OFFSET
7.6. LIMIT和OFFSET LIMIT和OFFSET允许你只检索查询剩余部分产生的行的一部分: SELECT select_list FROM table_expression [ ORDER BY ... ] [ LIMIT { number | ALL } ] [ OFFSET number ] 如果给出了一个限制计数,那么会返回数量不超过该限制的行(但可能更少些,因为查询本身可能生成的行数就比较少)。
1355 0
|
Java 数据库连接 数据安全/隐私保护
angular 中 cacheFactory 数据传递
angular 中  $cacheFactory.Cache 可以用来进行数据传递,主要是不同controller之间的传递,其方法有以下几个 put(key, value); g...
894 0