zoukankan      html  css  js  c++  java
  • 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课堂微信公共平台
  • 相关阅读:
    android bitmap 防止 内存溢出
    析android应用增量升级(差分升级)
    android 数据库查询中使用索引-大幅提高数据库操作速度
    android 插件框架
    android悬浮view-FloatingView
    android 消息分发框架 otto
    修改了USER_AGENT还是不能抓取到数据怎么办?
    找不到指定文件scrapy,在pycharm中运行程序出现错误
    scrapy抓取豆瓣网信息时报错提醒403[scrapy.spidermiddlewares.httperror] INFO
    slidetoshutdown电脑滑动关机命令失效了怎么办?
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6923905.html
Copyright © 2011-2022 走看看