`

Cocos2d-x优化中图片优化

阅读更多

在2D游戏中图片无疑是最为重要的资源文件,它会被加载到内存中转换为纹理,由GPU贴在精灵之上渲染出来。它能够优化的方面很多,包括:图片格式、拼图和纹理格式等,下面我们从这几个方面介绍一下图片和纹理的优化。
1.选择图片格式
要回答这个问题,我们需要先了解一下目前在移动平台所使用的图片文件格式,以及这些图片格式Cocos2d-x是否支持。图片格式有很多,但是在移动平台主要推荐使用的PNG,JPG也可以考虑,而其它的文件格式最好转化成为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,节省了200KB,200KB已经很了不起了。

 

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课堂微信公共平台
分享到:
评论

相关推荐

    Cocos2d-x实战:JS卷——Cocos2d-JS开发

    资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...

    cocos2d-x性能优化

    cocos2d-x性能优化

    cocos2d-x中国象棋

    简单用cocos2d-x写的中国象棋,未实现AI 代码写的比较乱,边学边写的,很多重复的,没有优化的,有些地方还是值得一看的。

    cocos2d-x 2012-03-31开发者大会演讲稿PDF(3)

    cocos2d-x 2012-03-31开发者大会演讲稿PDF(3)- x86架构上基于cocos2d-x的游戏开发与优化.pdf

    Cocos2d-x实战 C++卷,完整扫描版

    第四篇设计与优化,即第18章~第20章,内容包括Cocos2d-x中的常用设计模式、Cocos2d-x中的内存管理和性能优化。 第五篇平台移植,即第21章~第23章,内容包括从Win32到Android平台的移植、从Win32到WindowsPhone8...

    quick-cocos2d-x:quick-cocos2d-x是基于cocos2d-x的快速框架。 在Lua中制作手机游戏

    quick-cocos2d-x是cocos2d-x开发商“”专门针对Lua开发者...成熟可靠:目前使用Cocos2d-x平台开发的热门手游产品中,几乎一半都用到了Lua脚本语言。而Quick-Cocos2d-x是Cocos2d-x + Lua的升级解决方案,保持了成熟可靠

    Cocos2d-x射击小游戏 优化版

    Cocos2d-x射击小游戏 优化版 Cocos2d-x射击小游戏 优化版 Cocos2d-x射击小游戏 优化版 详见:http://blog.csdn.net/wwkaven/article/details/38583353

    《Cocos2D-x权威指南》(满硕泉)代码实例

    由国内iOS和Cocos2D领域的先驱和资源专家撰写,不仅系统讲解了Cocos2D的使用方法、技术要点、工作原理、高级知识、开发技巧、最佳实践和性能优化,而且通过精心设计的典型案例详细讲解了Cocos2D游戏设计与开发的完整...

    Cocos2d-x高级开发教程(最新)

    》以《捕鱼达人》游戏为案例,全面系统地讲解了cocos2d-x 的功能与特性,以及进行游戏开发的基本思路,包括游戏框架的搭建、基本游戏元素的使用、动作、音乐与音效、物理引擎、高级开发技巧、游戏优化策略以及网络...

    反转贪吃蛇 Cocos2d-x+lua贪食蛇游戏源码

    使用cocos2d-x lua和code ide编写的贪吃蛇小游戏 反转贪食蛇一改传统贪食蛇的玩法,游戏大屏幕...将cocos2d-x 3.1.1 创建的lua项目中,frameworks/cocos2d-x复制到framesworks publish目录下有Android的apk安装包

    王哲:Cocos2D游戏性能优化

    Cocos2D这款用于开发2D游戏的开发框架以及由其衍生的Cocos2D-X跨平台开发框架和众多分支,正在帮助越来越多的开发者实现高效稳定...作为Cocos2D-X核心开发者,王哲将分享优化Cocos2D-X、Cocos2D-HTML5游戏性能的案例。

    cocos2d-x开发教程

    第二阶段则学习如何使用cocos2d-x引擎进行进行游戏开发,它包含了cocos2d-x引擎各个方面的基础知识点; 第三阶段则学习游戏开发中一些常用的技术,包括网络,安全,优化,编辑器等运用,以及结合移动设备的特点和当前...

    仿_放开那三国cocos2d-x源码.zip

    Cocos2d-x仿《放开那三国》手游源码,《放开那三国》是一款三国题材卡牌手游,在传统卡牌游戏基础上对玩点和系统进行优化改革,VS2010+Cocos2D-X-2.2.3开发

    Cocos2d-x 3.2 大富翁游戏项目开发-第九部分 代码部分优化

    Cocos2d-x 3.2 大富翁游戏项目开发-第九部分 代码部分优化

    12个Lua学习文档(为quick cocos2d-x打基础)

    12个Lua学习文档(为quick cocos2d-x打基础)

    Cocos2d-X权威指南 完整版第三部分(总共三部分)

    资深游戏开发工程师根据Cocos2D-x的2.0.1版本撰写,内容全面,系统讲解了Cocos2D-x的功能特性、使用方法、技术要点、开发技巧、最佳实践以及性能优化,同时融入了游戏开发的思想;实战性强,每个知识点辅之以便于...

    Cocos2D-X开发学习笔记-瓦片地图的使用示例 .

    Cocos2D-X开发学习笔记-瓦片地图的使用示例 教程地址:http://blog.csdn.net/yangyu20121224/article/details/10053961

    基于Cocos2d-X3.17跨平台单机麻将商业级麻将算法AI算法

    在实现过程中,你可以充分利用Cocos2d-X 3.17提供的强大功能和灵活性,使游戏具有更好的性能和用户体验。通过精心设计和优化算法,游戏可以实现更加智能的对手和更具挑战性的游戏体验。结合商业级麻将算法和AI算法的...

    Cocos2D-X:Cocos2D-X框架。 其他班级

    Cocos2D-X Cocos2D-X框架的便捷类和摘录的个人集合。 欢迎您将它们包括在您的项目中,并根据需要进行调整。 也可以随时优化代码并提交更改。 滑动手势(Cocos2D-X 3.6): 基本的滑动手势和MoveBy动作。 将其拖放...

Global site tag (gtag.js) - Google Analytics