剖析plist文件在游戏中运用的优点

1. 预备知识

什么是图片的alpha通道?
它一个8位的灰度通道,用256级灰度来记录图像中的透明度信息,定义透明不透明半透明区域,其中表示不透明,表示透明,表示半透明。


如何计算图片所占内存的大小

  • 计算像素总数:640*480
  • 32位,每个像素占32Bit:640x480x32
  • 8Bit = 1Byte = 1/1024 KB = 1/1024/1024 MB:64048032/8/1024/1024

索引彩色模式
以往图片都是保存每个像素的彩色信息,现在却是从图像中挑选出来具有代表性的颜色编号,每个颜色编号对应一个颜色,这样图片的数据量较小
索引透明
设置特定索引值为透明色
alpha透明
设置索引色附加八位透明度

2. 纹理格式

2.1 png格式

无损压缩的位图图形格式,支持索引、灰度、RGB三种颜色方案、Alpha通道

优点:无损、高视觉质量、可处理8位和16位透明度
缺点:高GPU成本

2.1.1 为什么很少直接使用png

PNG是变长编码格式,颜色变化少频率低的部分,编码后占的内存字节数就少。除非你把整张图片都解压完毕,否则无法准确的计算出原图一个坐标处的color对应的压缩到了哪里
PNG是用来在游戏制作流程中间传递美术内容的,最终在游戏引擎里需要转变成一种固定码率的、可寻址的流式压缩格式,以方便随机寻址和采样,所以就出现了PVRTC/ETC等格式。

2.2 pkm格式

PVRTC/ETC等Texture Compression格式,直接被GPU读取到显存,用时无需解压
pkm属于ETC纹理压缩类别(4bits)。ETC纹理压缩是由Khronos为OpenGL ES 2.0制定的纹理压缩格式,几乎所有的Android设备都可以使用这种纹理压缩格式。
ETC的缺点:不支持RGBA 4通道的图片压缩即不支持透明图片

2.2.1 如何使etc支持透明图片
  • 方法一: 一种是通过Mali工具生成pkm文件时选择Create atlas,这样就生成了一张拼接在一起的纹理。这张纹理上半部分是原始图片(无alpha信息),下半部分是alpha信息图片。在渲染的时候使用特殊的shader进行渲染
  • 方法二: 创建两张分离的图片,分别是原始图片和alpha图片。渲染时加载这两张纹理,然后alpha图片当做参数传递给原始图片的shader

2.3 PVRTC格式

2.3.1 什么是PVRTC格式

PowerVR纹理压缩(PVRTC)纹理压缩是一种有损固定速率的纹理压缩格式(4bits)。它目前被用作所有iPhone ,iPod 和iPad 设备的标准压缩格式,它们的图形芯片对它提供硬件支持。
与ETC不同,PVRTC不是基于块的。相反,它涉及两个低分辨率图像的双线性放大和低精度混合。除了PVRTC格式的独特压缩过程外,它还支持2-bpp(每像素位数)和4-bpp选项的RGBA(支持alpha通道)。

2.3.2 优缺点

优点:
(1)支持alpha通道/组件。
(2)支持2-bpp和4-bpp模式下的RGBA数据。
(3)文件大小比通过PNG纹理压缩产生的小得多。
(4)PowerVR GPU上的GPU硬件加速。
缺点:
(1)质量不如PNG纹理压缩(PVRTC是有损压缩格式)。
(2)PVRTC仅在PowerVR硬件上受支持。
(3)只有正方形(幂的两个)尺寸纹理被确定为一致地工作,尽管在某些情况下,为压缩纹理提供了矩形支撑。
(4)将纹理压缩为这种格式可能会很慢。

3. 为什么要使用plist合图

内存问题:OpenGL ES纹理的宽和高都是2次幂数,假设1.png本身是480x320,但是载入内存后,会变成一张512x512的纹理,当我们使用plist把图片拼在一起后,这些浪费的空间就被合理利用起来了。
渲染速度:从OpenGL ES上来说我们应该尽量减少渲染时切换纹理和调用glDrawArray。如果我们是一张张散图,那么每画一个图像都会切换一次纹理并调用一次glDrawArray。而使用了合图,就可以进行批次的渲染。

4. 批次渲染

与普通渲染不同,它不是每渲染一次就进行清除,而是渲染了一段时间再清除。
优点:io次数明显减少,渲染效率提高(可参考CCSpriteBatchNode

4.1 自动批次渲染

只要精灵使用同一纹理,没有更改blendFunc,shader,就满足自动批次渲染,会自动将这些精灵加入同一渲染批次里,优化渲染速度。(相同纹理、相同混合函数、相同shader)

5. DrawCall

简单来说,因为GPU渲染三角形的效率非常高,如果我们每次在draw call只提交极少的数据,那么大部分CPU就会处于空闲状态,CPU将不能足够快的提供数据给GPU。并且GPU在draw call之间,为了防止前后Draw的依赖关系造成的绘制错误,一般会在draw call后刷新整个缓冲区,那么如果draw call的数据过少,那么一直不断的在刷新缓冲区,这对GPU也会造成浪费

参考资料:
减少Draw Call(批渲染)
why are draw calls expensive?
优化 Cocos2d-x 游戏性能
纹理像素格式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,884评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,755评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,369评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,799评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,910评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,096评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,159评论 3 411
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,917评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,360评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,673评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,814评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,509评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,156评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,123评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,641评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,728评论 2 351

推荐阅读更多精彩内容

  • 转载自VR设计云课堂[//www.greatytc.com/u/c7ffdc4b379e]Unity S...
    水月凡阅读 1,010评论 0 0
  • 卷首语 欢迎来到 objc.io 的第三期! 这一期都是关于视图层的。当然视图层有很多方面,我们需要把它们缩小到几...
    评评分分阅读 1,759评论 0 18
  • 在第13章“高效绘图”中,我们研究了和Core Graphics绘图相关的性能问题,以及如何修复。和绘图性能相关紧...
    雪_晟阅读 626评论 0 0
  • 原文地址 http://www.fx114.net/qa-75-172454.aspx 使用Profiler工具...
    IongX阅读 5,837评论 1 11
  • 1. 移动GPU大全 目前移动市场的GPU主要有四大厂商系列: 1)Imagination Technologie...
    hcq666阅读 2,351评论 0 54