当前位置:首页 > 编程开发

手机游戏开发纹理图片优化心得

webgou13年前 (2014-02-17)编程开发371

       之前写过一些纹理与内存优化的文章,本质说的就是图片格式的选用问题。这里记录一些最近开发中关于图片优化的经验和心得。

       1、纹理压缩。  就像windows下的dds图片一样,使用纹理压缩可以极大的减少图片加载时间(意味着不会有图片加载时的卡顿),内存消耗(以pvrtc4为例,内存直接减少到原来的八分之一),和游戏渲染性能。   ios下毫无疑问是pvr了(pvrtc4)  ,android下比较变态,显卡不同,支持的纹理压缩格式也不相同,一般来说etc1的格式(pkm或ktx扩展名)是opengles2.0均支持的格式。 但是这个仅仅是理论上支持,永远不要高估山寨机的性能,在某些山寨机(或者是联想这样的准山寨机)etc1的图片也无法正常显示,甚至是会崩溃。  所以android下不推荐使用纹理压缩格式。这样比较保险点。最新测试发现,原来是部分显卡不支持非2的整次幂的etc1图片,部分显卡是支持的。所以保险起见,所有的etc1图片需要是2的整次幂。  

     2、关于纹理内存优化没有太多可说的了,无非就是减少像素位数(RGBA888-->RGB565),减少图片大小,合理使用图片(即使释放资源)

     3、图片加载速度也是比较关键的一点。  能使用纹理压缩固然很好,不能使用的话,有两个解决方法,使用异步加载(可以解决卡顿的问题),合理预加载图片。

     4、图片体积,这个关系到最终安装包的大小。虽然现在手游的安装包越来越大,但是小一些总是好事。  同样,ios下使用pvrtc4的图片,一些颜色过渡明显的,使用png图片,如果没有半透明则使用jpg图片。

           android下不考虑使用压缩纹理。  则颜色位数少的使用png8的图片格式,颜色位数较多的如果非半透明使用jpg图片,如果含有半透明使用原始png图片(一般来说这种图片不会很多)。 总体来说,使用png8和jpg来减少图片体积大小。 同样图片体积小了也有助于提高加载速度。

    5、关于webp格式。这个我之前测试过,不知道现在有没有改进。  虽然他支持半透明,并且拥有比jpg更优的压缩比,但是由于纯cpu解压,所以加载速度非常悲剧。暂不考虑

    6、关于上文提到的png8的格式,这个是一个调色板格式,也就是说如果颜色位数小于256的话,图片就不会失真。这个不要用photoshop的转换,那个算法很挫,效果很糟糕。推荐一个在线工具和一个命令行工具进行批处理。 使用命令行工具转换的png8绝大多数情况与原图一直,除非半透明渐变过渡非常强的图,这样会有明显的波纹。

       在线版本     http://tinypng.org/

       命令行版本  pngquant,   使用方法很简单   pngquant.exe --force --verbose --ext .png --ordered --speed=1 --quality=50-90  xxxx.png

        其中--ext指定输出后缀,直接指定.png就是覆盖原文件

   7、关于jpg的压缩,jpg图片虽然很小了,但是还是可以进一步压缩的。使用Image Optimizer工具可以使图片进一步减少(10%~60%)

   8、使用2d骨骼动画甚至是3d动画,可以有效减少纹理所占的内存和加载消耗,虽然会增加一些cpu运算的消耗,但是手游应该不会出现同屏多少模型的情况。 尤其是一些全屏光效,拿2d图片帧几乎无法处理,但是3d光效就可以轻易搞定。 

 

来源:http://blog.csdn.net/langresser_king/article/details/9313255

扫描二维码推送至手机访问。

版权声明:本文由知了博客发布,如需转载请注明出处。

本文链接:https://www.webgou.info/?id=577

分享给朋友:

“ 手机游戏开发纹理图片优化心得” 的相关文章

singleton模式

singleton模式 #include "stdio.h" class singleton { private static singleton instance = new singleton();//不能在这里初始化 singleton(){} ~singleton(){} publi…

用ultraedit实现编码转换

BOM这里涉及到一个BOM(Byte Order Mark) 的概念.简单的讲,在Unicode标准中,为了标示文本文件的编码类型,可以在文本文件的开始插入几个特殊的byte,通过这几个特殊的byte,应用 程序就可以鉴别文本文件使用的是那种编码了.那几个特殊的byte也被称之为BOM(参考:ht…

线路板设计软件(PCB设计软件)详细综述

    随着电子技术的高速发展,对电子产品的要求越来越高,功能越来越多,虽然蕊片的集成度越来越高,但是,对于线路板的设计要求,也是越来越高的. 线路板设计,也叫PCB设计,因为线路板在英文的全称为 Printed circuit board,简写为PCB,所以线路…

mysql字符编码集

在MySQL的客户端上执行一次查询的过程一般是,在客户端的提示符后面输入一条SQL语句,回车,然后终端显示出查询的结果。这个过程中,只有终端和 三个MySQL的系统变量指定了正确的字符集,才能保证我们将一个正确的SQL语句送到服务器,然后服务器返回正确的结果,并且在终端正确显示。...…

samba服务架设

上建立准备共享的文件夹名称,这里我建立的名称是....…

The Basics of Protocols and Delegates

Apple offers a good overview of working with protocols in their Objective-C Programming Reference. However, sometimes a simple working example can go…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。