概述

包括以下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. Makefile 使用总结【转】

    转自:http://www.cnblogs.com/wang_yb/p/3990952.html 1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编 ...

  2. minio-dotnet --云存储服务

    inio是一家成立于2014年的生产开源云存储产品的新兴创业公司.这家创业公司是其创始人继Gluester之后的又一杰作,Gluester公司已经在2011年被Red Hat公司以1.36亿美元的价格 ...

  3. HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Negotiate,NTLM”

    转自:http://www.cnblogs.com/geqinggao/p/3270499.html 近来项目需要Web Service验证授权,一般有两种解决方案: 1.通过通过SOAP Heade ...

  4. Yeoman

    安装Yeoman之前,确认安装好Node.js和npm. sudo npm install --global yo 然后查看软件版本 yo --version && bower --v ...

  5. JavaEE基础(二)

    1.Java语言基础(常量的概述和使用) A:什么是常量 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常量 用 ...

  6. WPF:窗体置顶

    1.设置窗体TopMost属性 private DispatcherTimer timer; public Window1() { InitializeComponent(); Loaded += n ...

  7. C#:控制台程序调用中间库创建窗体

    1.类库项目引用System.Windows.Forms并添加引用后,才可创建窗体. 2.控制台应用程序调用中间库(DLL)中的方法创建窗体:中间类库使用反射下的Assembly加载包含窗体的类库及创 ...

  8. 第十一章 Android 内核驱动——Alarm

    11.1  基本原理 Alarm 闹钟是 android 系统中在标准 RTC 驱动上开发的一个新的驱动,提供了一个定时器 用于把设备从睡眠状态唤醒,当然因为它是依赖 RTC 驱动的,所以它同时还可以 ...

  9. easyui 布局标题纵向排列

    (function($){                 var buttonDir = {north:'down',south:'up',east:'left',west:'right'};   ...

  10. I'm Telling the Truth(二分图)

    .I'm Telling the Truth Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...