概述

包括以下5种优化:引擎底层优化、纹理优化、渲染优化、资源缓存、内存优化
 

引擎优化

2.0版本比1.0版本在算法上有所优化,效率更高。2.0版本使用OpenGl ES 2.0图形库,1.0版本使用OpenGL ES 1.0。

纹理优化

纹理是最消耗内存的,而且会降低渲染速率。

二的幂次方

OpenGL在申请内存存放纹理时,是按2的幂次方申请的,即对应480*320的图片,它申请的是512*512空间。可见,会有相当多的内存被浪费。所以,我们设计的图片,最好是2的幂次方,不然OpenGL最终还是申请2的幂次方内存空间。

由于不是所有图片都刚好能设计成2的幂次方,因此通过“拼图”方法解决。这就是为啥要使用TexturePacker的原因。如图:

色深优化

图片所占内存的大小用这条公式计算:高度像素*宽度像素*色深。如色深RGBA8888,是32个bit,每8bit是一个字节,因此一个像素点占4字节,就是一个整形字符大小。例子。一个480*320的图片大小,占内存480*320*4字节。

通常,如果对图片的色彩要求不是很高的话。ARGB8888(占4字节)可以改为,ARGB1555(2字节)(透明通道A占1位一般是用做图片混合运算)或者ARGB4444(如果不是做混合运算,用4位比较合适)。或者,如果不需要使用图片透明,就不需要A通道,直接使用RGB888(3字节)改为RGB565(2字节)。这样,图片的最终内存大小就会占用更少的空间。

纹理压缩格式

IOS系统使用PowerVR显示芯片,可以直接硬解码PVR格式,该格式可以直接被IOS读取。不过该方式不适合Android等平台。

PVR格式实际上就是把ARGB8888转成ARGB1555色深进行保存的。

骨骼动画

cocos2d-x 2.0.3开始支持骨骼动画,cocos2dBuilder2.1版本也可以进行动画编辑。在处理动画时,对内存优化也是很好的方案。

纹理尺寸限制

不同设备支持的纹理尺寸不一样,iphone4支持最大的是4096*4096,iphone4s是4096*2048。有的android设备,仅仅限制在1024*1024。拼图的时候要避免把图片拼的太大。为了提高游戏的兼容性,图片的尺寸最好都设置在1024*1024范围内(主流设备都支持)。

渲染优化

批次处理

使用CCSpriteBatchNode,准备好Sprite的坐标信息后,进行一次性渲染。

传统渲染处理是这样的:不同的切换纹理,不同地加载和渲染。而批次处理是一次加载完所有纹理,然后一次渲染,这样效率就提高了。

资源缓存

CCSpriteFrameCache
CCTextureCache
缓存比较耗电量,所以,一般使用完,就会调用remove函数。而且在预加载时要显示进度条,可能会影响用户体验,应该根据情况使用。

内存优化

 

资源占用的内存优化

如前面几个小节所述

内存池方案

游戏启动的时候就分配很大的一块区域,游戏运行过程中不释放,直到退出游戏再释放。平时不是为新资源分配内存,而是把资源加载到内存池里面。多次使用的时候,就不用经过多次的释放和重新加载。这部分可以多了解下C++的内存池管理机制。

转 cocos2d-x 优化(纹理渲染优化、资源缓存、内存优化)的更多相关文章

  1. 转 cocos2dx内存优化 (之二)

    一.cocos2dx之如何优化内存使用(高级篇) 本文由qinning199原创,转载请注明:http://www.cocos2dx.net/?p=93 一.内存优化原则 为了优化应用内存,你应该知道 ...

  2. 试试SQLSERVER2014的内存优化表

    试试SQLSERVER2014的内存优化表 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据库管理系统,而使用先进内存技 ...

  3. iOS开发--项目内存优化

    在用非ARC模式编写iOS程序的时候,造成程序内存泄露在所难免,后期我们一般会进行内存优化.自己比较常用的内存优化方法有两种 1.Analyze,静态分析内存泄露的方法.很简单,在Xcode菜单栏中点 ...

  4. Kafka 协议实现中的内存优化

    Kafka 协议实现中的内存优化 Kafka 协议实现中的内存优化   Jusfr 原创,转载请注明来自博客园 Request 与 Response 的响应格式 Request 与 Response ...

  5. Sql server2014 内存优化表 本地编译存储过程

    参考文献:http://www.infoq.com/cn/news/2013/09/Compiled-Queries http://www.bianceng.cn/database/SQLServer ...

  6. SQLServer 2014 内存优化表

    内存优化表是 SQLServer 2014 的新功能,它是可以将表放在内存中,这会明显提升DML性能.关于内存优化表,更多可参考两位大侠的文章:SQL Server 2014新特性探秘(1)-内存数据 ...

  7. 试试SQLServer 2014的内存优化表

    SQL Server2014存储引擎:行存储引擎,列存储引擎,内存引擎 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据 ...

  8. SQLSERVER 2014 内存优化表相关

    更新了SP2的补丁能够解决  不能收缩日志文件的bug了. 但是因为已经不用内存优化表了, 所以想着能够删除内存优化表的file group 但是发现 很难删除 先说结论: 以下是针对内存优化文件组的 ...

  9. 试试SQLServer 2014的内存优化表(转载)

    SQL Server2014存储引擎:行存储引擎,列存储引擎,内存引擎 SQL Server 2014中的内存引擎(代号为Hekaton)将OLTP提升到了新的高度. 现在,存储引擎已整合进当前的数据 ...

随机推荐

  1. js获取IP地址方法总结_转

    js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...

  2. How to create UrlSlug in Asp.Net MVC

    转自:http://www.ehsanghanbari.com/Post/20/how-to-create-urlslug-in-aspnet-mvc UrlSlug Is a way of gene ...

  3. 手机抓包软件Charles安装使用实例 (流媒体播放测试可去下载的时刻检测)

    手机抓包软件Charles安装使用实例   浏览:5258 发布日期:2015/07/17 分类:技术分享 关键字: 手机抓包软件 Charles 大胡子的博客Charles安装使用实例 Charle ...

  4. 启动hadoop报192.168.1.151: Address 192.168.1.151 maps to node1, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!

    使用root用户启动hadoop的时候报错: [root@node1 ~]# su - hadoop -c start-all.sh starting namenode, logging to /ap ...

  5. NSAssert用法

    今天突然发现了一个开发ios程序时调试的好帮手-NSAssert()函数.而且和NSLog()函数一样简单易用,代码如下: NSAssert(x!=0,@"x must not be zer ...

  6. java 字符串处理

    第一张: 第二张:

  7. ACM题目————最长回文串

    Description 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如aba, abba等   Input 输入有多组cas ...

  8. 上传文件时,Request报文头不同浏览器会产生不同的content-type

    选择一个zip文件上传,用IE看的报文头是image/jpeg,用chrom看是application/octet-stream. 第一次遇到这个类型的content-type,百度了一下, octe ...

  9. android -- 蓝牙 bluetooth (五)接电话与听音乐

    1.蓝牙耳机接听电话         这个就对应HFP(Hands-freeProfile),Free your Hand,蓝牙的初衷之一.先来看这个功能的场景,手机来电,手机与蓝牙耳机已连接,这时会 ...

  10. 为开发者准备的9个实用PHP代码片段

    一.查看邮件是否已被阅读 当你发送邮件时,你肯定很想知道你的邮件是否已被对方查看.下面的代码就能实现记录阅读你邮件的IP地址,还有实际的阅读日期和时间. error_reporting(0);Head ...