手游中的文件格式和纹理格式

手游中的文件格式和纹理格式


原文地址:http://78soft.com/article/7446.html

我们看到png、jpg、bmp 然后又看到RGBA-4444、RGBA-5551、RGB-888,然后看到什么pvr、pkm、etc等等 这些名字很多很多,看到会有些熟悉但是又分不清楚,本文就来梳理一下这些名字,作简要的解释。

一、首先我们来分类一下
1、文件格式:图片在硬盘中的格式
2、纹理格式:这里我认为是:包括了 在内存里面的格式和在传给GPU的纹理。
3、压缩算法:etc(本文会详细解释此算法)、pvr等

二、稍微深入的讲解
1、文件格式:
我们说的png、jpg、bmp指的是文件格式,就是图片在硬盘里面存储的格式,或者是手机的存储里面的格式,游戏的资源的格式。

引用百度百科里面的话:图像格式即图像文件存放的格式,通常有JPEG、TIFF、RAW、BMP、GIF、PNG。
PNG:提取《PNG文件格式详解》这篇文章的解释:
png文件由PNG文件标志(文件头)、3个以上的PNG的数据块(Chunk)按照特定的顺序组成

PNG文件标志 Chunk … Chunk
下面这个表格是数据块chunk的内容(主要的chunk)

数据块符号 数据块名称 多数据块 位置限制
IHDR 文件头数据块 否 第一块
PLTE 调色板数据块 否 在IDAT之前
IDAT 图像数据块 是 与其他IDAT连续
IEND 图像结束数据 否 最后一个数据块

2、纹理格式
纹理格式 解释 其他
RGBA8888 RGBA 各占8位bit, 一个像素就4byte (1)常用地方:整个场景背景图片 大量的渐变色图片 (2)OpenGL ES生成纹理在生成纹理时大小会自动扩展成2的幂次方。不足自动向下调整
BGRA8888 跟RGBA8888顺序不一样
RGBA4444 RGBA 各占4位bit 一个像素就2byte
RGB888 这个相比第一种 RGBA8888 没有 alpha通道 用在没有透明度的图片 游戏背景图片。
RGB565 这个是高品质的16位纹理 也是没有透明度
RGBA5551 透明度只有0 和 1 没有渐变的图片
PVRTC2 iphone 的图片芯片 对一种称为 PVRTC 的压缩技术提供硬件支持所有颜色和透明度占2个字节(品质可能有点低)
PVRTC4 所有颜色和透明度占4个字节,在ios上基本都用这个格式 (iOS产品专用)
PVRTC2_NOALPHA RGB占用2个字节,没用ALPHA通道
PVRTC4_NOALPHA RGB占用4个字节,没用ALPHA通道
ETC1 安卓常用的压缩格式
ETC2 安卓常用的压缩格式

3、压缩算法
Android设备
首先,android设备一般使用ETC1压缩 一种有损的图像压缩方式:
ETC1是opengl2.0 压缩之后每个像素占用4bit 压缩之后的格式为KTX或者PKM 前者支持存储多纹理 后者只支持单纹理
1024的RGBA32占用内存4M 如果是etc1的压缩之后就是0.5M
ETC1的缺点是不支持Alpha通道 不支持有透明度的图片压缩
ETC2解决了Alpha通道 但是它是Opengl3.0标准 考虑到2.0设备市场占用率 一般使用ETC1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值