Cocos2d-x优化中图片优化

在2D游戏中图片无疑是最为重要的资源文件它会被加载到内存中转换为纹理由GPU贴在精灵之上渲染出来。它能够优化的方面很多包括图片格式、拼图和纹理格式等下面我们从这几个方面介绍一下图片和纹理的优化。
1.选择图片格式
要回答这个问题我们需要先了解一下目前在移动平台所使用的图片文件格式以及这些图片格式Cocos2d-x是否支持。图片格式有很多但是在移动平台主要推荐使用的PNGJPG也可以考虑而其它的文件格式最好转化成为PNG格式。我们先了解一下它们的特点。
1、PNG文件
PNG文件格式设计目的是替代GIF和TIFF文件格式是一种位图存储格式。PNG是采用无损压缩可以有Alpha通道数据支持透明但不支持动画。PNG可以保存高保真的较复杂的图像但是文件比较大。PNG格式具体又分为PNG8和PNG24后面的数字则是代表这种PNG格式最多可以索引和存储的颜色值。
2、JPG
JPG全名是JPEG。JPG图片以 24 位颜色存储单个位图图形。JPG是与平台无关的格式支持最高级别的压缩压缩比率可以高达 100:1这种压缩是以牺牲图像质量为代价的换取更小文件大小。JPG不支持透明。JPG比较支持摄影图像或写实图像作品这是因为它们颜色比较丰富。而对于所含颜色很少、具有大块颜色相近的区域或亮度差异十分明显的较简单的图片JPG就不太适合了。

那么我们选择JPG还是PNG呢?很多人认为JPG文件比较小PNG文件比较大加载到内存纹理JPG占有更少的内存。这种观点是错误的纹理与图片是不同的两个概念如果纹理是野营帐篷话那么图片格式是收纳折叠后的帐篷袋子装有帐篷的袋子大小不能代表帐篷搭起来后的大小。特别是在Cocos2d-x平台JPG加载后被转化为PNG格式然后再转换为纹理保存在内存中这样无形中增加了对JPG文件解码的时间因此无论JPG在其它平台表现的多么不俗但是在移动平台下一定它无法与PNG相提并论。

2.拼图
不知道大家是否有过这样的一个疑问为什么要把场景中小图片都拼接成一个大图片呢这个问题我们在使用精灵表的时候简单说了一下这一节我们详细介绍一下它原因。
如果把多个小图拼接称为一个大图纹理图或精灵表可以减少IO操作。并且使用散图每次都要针对一个图创建精灵添加到纹理缓存如果很频繁而大量创建对于CPU和内存的开销很高。而使用大图则一次性将创建精灵帧缓存并把它们纹理添加到纹理缓存中这样会明显地提高效率。
在进行图片拼接的时候如果能够满足用户保真度情况下大图越小当然是越好。我们可以通过TexturePacker等纹理拼图工具设置纹理支持NPOT这些工具的使用大家可以参考我们的《Cocos2d-x实战卷Ⅳ工具详解》。
那么什么是NPOT呢NPOT是“non power of two”的缩写意思是非2的N次幂。在OpenGL ES1.1时候纹理图片要求是2的N次幂即POT否则纹理无法创建。POT要求下使用纹理工具拼接成的大图可以会有很多的空白区域。如下图所示右下角还有一些空白区域造成了浪费也会同时增加图片的大小下图所示的图片大小是2048KB。

POT拼图
OpenGL ES2.0后支持了NPOT我们不需要为图片是否为2的N次幂而苦恼如图所示是采用NPOT拼图整个图片基本上没有大的空白区域能充分地利用了图片空间。20-24所示的图片大小是1822KB节省了200KB200KB已经很了不起了。

NPOT拼图

更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》‍

本书交流讨论网站http://www.cocoagame.net

更多精彩视频课程请关注智捷课堂Cocos课程http://v.51work6.com

欢迎加入Cocos2d-x技术讨论群257760386

《Cocos2d-x实战 C++卷》现已上线各大商店均已开售‍

京东http://item.jd.com/11584534.html

亚马逊http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当http://product.dangdang.com/23606265.html

互动出版网http://product.china-pub.com/3770734

《Cocos2d-x实战 C++卷》源码及样章下载地址

源码下载地址http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1 

样章下载地址http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台

时间: 2024-11-01 08:21:44

Cocos2d-x优化中图片优化的相关文章

网站SEO优化之图片优化技巧分享

对于许多网站来说,都没有去刻意的去优化它的图片的,如果大家知道,许多网站,它的图片流量点到了总流量的百分之十的时候,我想大部分人还是还会注意到图片的优化效果的,其实这是一个事实,许多大型的网站,图片流量基本上都快达到了这个百分比,这是一个不小的数据,而且相对于网页优化来说,图片优化要相对简单得多了,它需要的资源也没有网页多,所以它的性价比还是比较高的,那么究竟要怎么去优化网站的图片呢? 1.为每一张重要的图片都单独的建立一个网页,建立一个图片频道 在这一点上梦芭莎是有做图片频道的,细心的朋友会发

总结Android App内存优化之图片优化_Android

前言 在Android设备内存动不动就上G的情况下,的确没有必要去太在意APP对Android系统内存的消耗,但在实际工作中我做的是教育类的小学APP,APP中的按钮.背景.动画变换基本上全是图片,在2K屏上(分辨率2048*1536)一张背景图片就会占用内存12M,来回切换几次内存占用就会增涨到上百兆,为了在不影响APP的视觉效果的前提下,有必要通过各种手段来降低APP对内存的消耗. 通过DDMS的APP内存占用查看工具分析发现,APP中占用内存最多的是图片,每个Activity中图片占用内存

旅游类网站的优化心得 图片优化

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 对于旅游类网站来说,图片是非常重要的一部分,图片不仅可以更形象的展示他们的产片,也可以给客户带来许多视觉上的享受,所以,图片在旅游网站中占的分量是非常之大.但是对于优化工作来说,图片又是非常难跨过的一道坎,以为自从搜索引擎诞生到现在,搜索引擎的程序员门都是只能攻克收录程序收录文本,虽然现在有些程序是可以收录图片之类的东西,毕竟那是非常非常少一

总结Android App内存优化之图片优化

前言 在Android设备内存动不动就上G的情况下,的确没有必要去太在意APP对Android系统内存的消耗,但在实际工作中我做的是教育类的小学APP,APP中的按钮.背景.动画变换基本上全是图片,在2K屏上(分辨率2048*1536)一张背景图片就会占用内存12M,来回切换几次内存占用就会增涨到上百兆,为了在不影响APP的视觉效果的前提下,有必要通过各种手段来降低APP对内存的消耗. 通过DDMS的APP内存占用查看工具分析发现,APP中占用内存最多的是图片,每个Activity中图片占用内存

Cocos2d-x优化中纹理优化

1.纹理像素格式纹理优化工作的另一重要的指标是纹理像素格式能够最大程度满足用户对保真度要求的情况下选择合适的像素格式可以大幅提高纹理的处理速度.而且纹理像素格式有与硬件有这密切的关系.下面我们先了解一下纹理像素的格式主要的格式有RGBA8888.32位色它是默认的像素格式每个通道8位比特每个像素4个字节.BGRA8888.32位色每个通道8位比特每个像素4个字节.RGBA4444.16位色每个通道4位比特每个像素2个字节.RGB888.24位色没有Alpha通道所以没有透明度.每个通道8位比特每

android内存优化之图片优化_Android

对图片本身进行操作.尽量不要使用setImageBitmap.setImageResource.BitmapFactory.decodeResource来设置一张大图,因为这些方法在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存.因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的source,decodeStream最大的秘密在于其直接调用JNI>>nativeDeco

android内存优化之图片优化

对图片本身进行操作.尽量不要使用setImageBitmap.setImageResource.BitmapFactory.decodeResource来设置一张大图,因为这些方法在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存.因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的source,decodeStream最大的秘密在于其直接调用JNI>>nativeDeco

浅谈图片优化的方法

在网站优化中,如果图片优化得好,不但可以提高页面的加载速度,提升网站的用户体验,而且还可以通过图片优化来节省网站的带宽.那么作为页面构建工程师应该采用什么方法来优化图片,既能保证UI的还原度,又使图片最精简呢?下面我就个人经验,来简单介绍一下图片优化的方法,首先我们了解一些图片方面的知识: 1.&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;矢量图与位图. 矢量图:缩放.旋转不失真的图像格式,不管你离多近去看都看不

seo优化中不容忽视的页面优化

seo优化中页面的优化是很重要的,合理的对网站页面进行优化,使网站更加适合搜索引擎的检索.但是还是有很多的企业在网站建设完成后对于页面的优化并不重视,title没有写,要么关键词布局不合理,要么网页代码过于复杂,这些问题都会直接影响网站的优化效率.其实对于页面的优化并不是很难,只需要注意网站页面优化的几个要点几个: 1.mate标签的优化 对于Meta标签,主要有title.description.keywords三个地方,页面的tittle在页面的优化中是占比较重要的部分,通常设置为20-25