[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,如需转载请自行联系原作者
相关文章
|
6月前
|
前端开发 人机交互
Cocos Creator3.8 项目实战(四)巧用九宫格图像拉伸
Cocos Creator3.8 项目实战(四)巧用九宫格图像拉伸
196 0
|
8月前
|
存储 编译器 图形学
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
使用Unity在材质球上实现绘画:详细解释每一行Shader代码!
103 0
|
vr&ar 图形学
Unity 的基础光照
Unity 的基础光照
134 0
Unity 的基础光照
|
算法 图形学
【Unity3D Shader】学习笔记-图片滤镜①
效果和上面的比较相似,Photoshop CS图像黑白调整功能的计算公式为: gray= (max - mid) * ratio_max + (mid - min) * ratio_max_mid + min 公式中:gray为像素灰度值,max、mid和min分别为图像像素R、G、B分量颜色的最大值、中间值和最小值,ratio_max为max所代表的分量颜色(单色)比率,ratio_max_mid则为max与mid两种分量颜色所形成的复色比率。 默认的单色及复色比率为:
805 0
【Unity3D Shader】学习笔记-图片滤镜①
Cocos2d-x-v3场景切换
Cocos2d-x-v3场景切换
118 0
|
Go 图形学 前端开发
Unity UGUI优化小技巧(RaycastTarget)
在拼UI的过程中会添加很多图片文字,但是很容易会忽略其中一点就是把无用的RaycastTarget去掉,因为开启此选项,虽然此组建虽然不需要接受射线,但是它而然工作且消耗性能 在网上找了2个小工具: 其中一个是在Editor模式下用蓝色框出启用RatcastTarget的组件 Code如下。
1369 0
|
存储 图形学
【Aladdin Unity3D Shader编程】之四 贴图纹理
关于纹理贴图介绍 纹理坐标也叫UV坐标,UV坐标都是0~1,并不是我们所理解的像素坐标,相当于是一个百分比。 编写shader映射纹理 将纹理的颜色取代漫反射的颜色 Shader "AladdinShader/11 Single Texture Shader" ...
1725 0