整理自:

http://zengrong.net/post/2070.htm
http://blog.csdn.net/langresser_king/article/details/8426708
http://blog.csdn.net/laogong5i0/article/details/8637425
一、选择:
ios上图片当然是用pvr(pvrtc2/pvrtc4)格式,推荐pvr.ccz的rgb565/arba4444格式。
android上图片为了兼容目前采用PNG/(JPEG/ETC1)格式(或针对部分android手机可用pvr.ccz(NPOT)格式)。
两个平台都支持的选择:1024*1024及以下的用PNG(针对ios优化用pvr4效果更好),1024*1024以上的使用NPOT选项的pvr.ccz;
为了能兼容各种手机,贴图的长宽不要超过2048(tga格式的图片不要超过1024)。3D光效或模型的贴图必须为2的幂次方,2D图片没有这个限制。
各平台下的纹理格式:

PC平台

  • 高效压缩格式纹理dds.

iOS平台

  • 高效压缩格式纹理: pvr, 必须是正方形且边长为2的幂次方,使用PvrTexTool生成.
  • PvrTexTool支持命令行调用,调用方法和参数请参考纹理工具命令行调用范例
  • 苹果设备限制标准官方文档

Android平台

C3游戏引擎在Android系统下,根据已知的5种机型硬件不同,采用不同的压缩格式纹理:

  • 1.Mali CPU(三星猎户座CPU,如I9220/I9300等(Galaxy 2/3)): 不透明纹理使用ETC压缩,使用PvrTexTool生成ktx格式后缀的纹理,透明纹理使用png.
  • 2.高通的CPU(HTC手机): 使用The Compressor 工具生成的ATC格式纹理(Note:工具生成的文件后缀名为dds,需要修改后缀名为atc给C3游戏引擎使用)
  • 3.德州仪器CPU(摩托罗拉手机或其他基于PowerVR的GPU的解决方案,如联发科MT6573处理器,三星GS4): 使用跟苹果iOS一样的pvr格式,使用PvrTexTool生成.
  • 4.Nvidia Tegra2 CPU: 使用DDS压缩纹理,等同PC上的纹理格式(DXT1, DXT3, DXT5).
  • 5.Marvell GPU(中兴U880/华为海思CPU):OpenGLES2.0驱动实现有严重问题,只能用png格式。

二、总结:

1、最终决定图片占用内存的是它的像素格式和大小,与其扩展名无关。png8  png32 jpg pvr只要其像素格式都是argb8888,那么最终图片占用的内存是一样的。

2、如果不是pvrtc4的格式,那么图片大小不要扩展成2的整次幂(PC上dds需要2的整次幂但是手机中非pvrtc4不需要),因为图片越小,占用内存越小

3、单单去除透明通道不会减少图片所消耗的显卡内存(内存虽然减少了,但显存却没减少,应该和显存的内存对齐有关),png和jpg图片也无法减少图片体积,所以不推荐rgb888的格式。替代选择rgb565和rgb5551。

5、小心加载图片时临时开辟的纹理数据造成的内存飙高,可以考虑加入内存池,及时的开辟和释放缓冲区。

6、如果是为了减少图片体积可以选择:1、jpg--压缩比最高,质量较好,但是不支持半透明    2、png8--同样图片会比jpg略大一些,使用ImageAlpha进行转换,视觉上几乎看不出差别。    这两种图片格式都可以极大的减少图片体积(减少70%~80%),但是无助于减少内存

7、如果是为了减少内存可以选择:1、没有透明色的图片统一转换为rgb565格式,这个时候无法使用png8了,所以png和pvr.ccz图片大小几乎相同,pvr.ccz速度更快,所以推荐pvr.ccz的rgb565格式    2、如果透明色仅仅是进行关键色标注,而没有渐变混合,那么推荐rgb5551 (r5_a1)的pvr.ccz格式

8、可以考虑写个打包系统,统一把资源文件打包,而不是单个文件用pvr.ccz进行zip压缩,这样可以获得更高的效率。(比如我封装了下暴雪的mpq打包,其读取速度与本地文件读取速度相当,这样就可以获得最佳的读取效率)

PVR格式优点:
1. cpu上,解压速度快,读取后直接交给显卡,不需要转换为ARGB形式就可以提交个显卡。
2. 内存和显存上,读取后直接提交给显卡,不用开辟临时内存来读取像素数据,避免了内存的申请释放消耗和内存的飙升。
3.文件大小上,pvr.ccz是压缩后的pvr格式,将大量的文件压缩为pvr.ccz可以有效的减少文件大小。
pvr.ccz其实就是pvr图片zip打包下,程序读的时候还是先解压出pvr资源,然后再读取pvr。不过由于压缩下可以极大的减小图片体积,所以虽然多了解压过程也不会有特别多的cpu消耗。
pvr格式可以被显卡所认可,而不需要开辟临时内存来读取,所以即便同为argb8888格式的图片,pvr也会比png有效率,虽然不会节约程序稳定运行时的内存,但是会避免加载大量图片时的内存暴涨;pvrtc4格式的图片,这个格式相当于windows下的dds图片。
  pvr图片可以节约解析图片数据到纹理这一步的消耗。也就是说读取pvr图片资源(等价于解压pvr.ccz到内存,如果是1024*1024 argb8888格式的话,那么图片大小就是4mb,ccz压缩后图片1mb左右)消耗4mb,将pvr图片数据提交给显卡消耗4mb。然后释放文件数据4mb。这么看似乎跟Png从内存占用上相比也不是非常有优势。(注意这里说的pvr是指pvr封装的argb8888,与pvrtc4的性能有天壤之别)

手机游戏中图片格式选择整理相关推荐

  1. iOS开发图片格式选择

    图片是如何显示的 在讲解如何选择图片格式之前,我感觉有必要先了解下,图片是如何展示的.如果我们要展示一张图片,一般步骤是这样的: /// Assets.xcassets中的图片,不需要后缀 let i ...

  2. html多选框放在图片上,网页中图片格式问题地总结.doc

    网页中图片格式问题地总结 HYPERLINK "file:///C:\\Users\\Administrator\\Desktop\\图片格式与设计那点事儿%20-%20TaobaoUED_ ...

  3. 将xml文件中图片格式修改为jpg

    将xml文件中图片格式修改为jpg: 1.只需要修改path路径,到*.xml所在的文件夹,运行之后会把xml 修改为.jpg. import os import os.path import xml ...

  4. 2014:手机游戏中那些正在变迁的元素

    转自:http://www.cocoachina.com/game/20150122/10995.html 2013年底我们专篇剖析了当时手机游戏行业中的八个既定趋势,包括: 一,IP游戏的盛行与成功 ...

  5. android中图片格式png,jpg和webp

    转载自:https://blog.csdn.net/fzx19910714/article/details/72877934 大家都知道同样的尺寸,png格式的图片要比jpg图片大很多,为什么Andr ...

  6. 批量改变文件夹和子文件夹中图片格式的两种方法

    生活中,我们通常会遇到这种问题:一个文件夹内部有多个子文件夹,每个文件夹内部有很多图片,我们想改变这些图片的格式. 例如.png格式图片支持背景透明,但我们想把它变成背景不透明的.jpg图片.又比如. ...

  7. 手机游戏中的社交互动与任务剧情

    http://www.gameres.com/forum.php?mod=viewthread&tid=456522 6 天前 上传 下载附件 (217.58 KB) GameRes游资网独家 ...

  8. Latex 中图片格式转换

    写在前面的话 虽然今天要讲的是怎么把图片的格式进行转换,我还是把它归类到了我的Latex中.因为我比较懒,有个时候遇到难画的表格的时候,我觉得用Latex我都要崩溃了,我一般是用word然后截个图上去 ...

  9. 策略模式的应用——游戏中武器的选择

    策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy).策略模式是一种对象行 ...

最新文章

  1. Eclipse高版本无法兼容FatJar的问题解决
  2. 未来的数据中心(二)
  3. 征战蓝桥 —— 2013年第四届 —— C/C++A组第3题——振兴中华
  4. hdu 3401(单调队列优化dp)
  5. 轻量级文本编辑器,Notepad最佳替代品:Notepad++
  6. CString TCHAR互相转换
  7. 零基础入门│带你理解Kubernetes
  8. 洛阳地铁一号线无人驾驶_刚刚,最新消息!涉及洛阳地铁1号线、2号线…
  9. python中split的用法-python中的split()函数的用法
  10. 负载均衡故障排错指南 (3)
  11. VC++之MFC教程
  12. 联想数据中心技术总监单奖定:双态IT -数字化转型下的IT建设新思路
  13. 高并发系统设计 --基于MySQL构建评论系统
  14. springboot网上电子书店下载购买系统-图书商城网站961h3-java-ssm二级分类
  15. 爬动漫网站数据_通过这三种动漫爱上数据科学和技术
  16. 关于Ubuntu20.04下向日葵远程软件连接中断的解决方法
  17. 【博客496】k8s dns解析与服务发现原理
  18. 什么是monkey patch(猴子补丁)
  19. 为什么手机多用arm?
  20. 浏览器禁用的端口踩坑之6666端口

热门文章

  1. 艾司博讯:拼多多关键词布局怎么做?找对方法很重要!
  2. objective-c学习推荐网站
  3. 软考和华为认证哪个好?更利于求职?
  4. 真正的学懂结型场效应管入门篇(经典)
  5. [Android] 分享一款国产安卓AR测距app 非常准 功能强大
  6. html多个图片转换为pdf文件,把多张图片快速合并成一个pdf文件
  7. 线控底盘命名,致敬反叛者!
  8. Linux下获取网卡名称的3种方法
  9. YGG 公会进阶项目介绍
  10. 7-5 游戏角色选择 (14 分)