安卓中压缩纹理ETC1和ETC2
etc是纹理压缩算法,pkm是纹理打包格式。pkm里面放的是往往是etc压缩的纹理。
ETC1:
1. 头文件:
(1) ETC1的文件头大小为16:
(2) 将ETC1纹理存成pkm文件时,加上这个文件头,便于读取时获知大小、格式,上传压缩纹理时把这个头去掉。
(3) 文件头内容为:特征符——编码宽——编码高——实际宽——实际高
(4) 尽管ETC1是固定的压缩比,但考虑到像素不对齐的情况,实际宽和实际高还是有必要存储的。
2. 编码构成:
(1) Jpeg压缩标准是把图像划分为一系列8X8的像素块,然后每个像素块压缩成变长编码的。ETC1则是4X4的像素块压缩成固 定的64位编码(8字节),由于固定,才有利于GPU内部实现并行解压缩。因此,不考虑像素非4对齐的情况,它的压缩比 是固定的48/8=6,至于常用的把ARGB分别存储为两张ETC1纹理的做法,压缩比是64/16=4。
(1024*1024)/16 * 8 = 524288
3. 编码过程:
(1) 将图像划分为一系列 4X4 的子块。
(2) 对每个子块,尝试所有的编码可能性,取解码后和原block像素差值和最小的一种编码。
(3) 是否flip,这个决定subblock如何划分。
(4) 每个subblock用哪一行差值表。
(5) 每个像素取哪一列的差值
注:决定好flip之后,颜色均值和是否能用diff方式已经确定,这个不用遍历。
(6) 合并所有子块编码。
不难看出,编码过程需要遍历所有可能性,其复杂度远大于解码,每一个 RGB 像素变成了一个精度较低的RGB均值和一个2位差值号,因此产生压缩。这种预测式表述自然本身就存在偏差,压缩损失亦来自于此。
ETC1和ETC2差别:
安卓中压缩纹理ETC1和ETC2相关推荐
- 在安卓中压缩GIF的几种方法(附实例代码)
前言 最近在划水摸鱼的时候,看到有位大佬发了一篇 GIF 压缩思路的文章. 让我突然想起来,很久以前我在我的项目 隐云图解制作 中就实现了一个动图工具箱,其中一个功能就是压缩GIF. 不过这位大佬只介 ...
- 游戏中纹理压缩格式之Texture压缩纹理
记载目录 1.杂言杂语 2.纹理格式与文件格式的区别 3.常见的纹理格式和应用场合及硬件的特定要求常见的压缩纹理格式硬件需求 4.压缩纹理特殊处理RGBA16 + Dithering 处理ETC1的通 ...
- android,ETC1压缩纹理带alpha通道
天降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行指乱其所为,所以动心忍性,曾益其所不能. --<孟子> 1,ETC纹理. opengl2.0的所有android机器支持ET ...
- ETC1压缩纹理格式详解
本来以为,ETC1作为Android 设备的OpenGL标准,开源且最常用的的一种压缩纹理格式,总会有人去翻译一下khronos的文档,读一下代码,给大家作个普及的,不料就是搜不到.没办法,尽管英文不 ...
- 关于OpenGL ES中的纹理压缩
基于OpenGL ES的压缩纹理有常见的如下几种实现: 1. ETC1(Ericcson texture compression) 2. PVRTC(PowerVR texture compressi ...
- WOW渲染中的纹理压缩
WOW渲染中的纹理压缩 一直没玩台服,国服也停留在72级. 成都的天气一天天严峻,更是不想动了,于是用NVPerfHUD挂了下WOW,看看它到底啥样. 用NVPerfHUD挂程序需要被挂的程序自身支持 ...
- 各种移动GPU压缩纹理的使用方法
介绍了各种移动设备所使用的GPU,以及各个GPU所支持的压缩纹理的格式和使用方法. 1. 移动GPU大全 目前移动市场的GPU主要有四大厂商系列: 1)Imagination Technologies ...
- Stage3D的压缩纹理- ATF工具介绍跟下载
那么这是什么呢? 首先,让我们开始谈论压缩纹理. 在任何技术里GPU编程都是一样的,你有两个选择,你可以选用压缩或没压缩的纹理,那么,有什么区别呢? 当使用未压缩的纹理,将一个png 图形文件上传至G ...
- 使用PVRTexTool压缩纹理的基本用法
PVRTexTool是Imagenation公司 PVRSDK的一部分,专门针对PVR格式提供纹理压缩和优化,也可以用来转换图片格式. 关于PVRSDK,你可以在这里面找到下载地址: http://c ...
- 安卓中图片占用内存大小分析
相关概念: 位深 色彩空间 颜色通道 int型占用字节 位深: 位是二进制的位.位深是指计算机系统中图片的一个像素点占用的二进制位数.例如位深32,就是使用2^8 = 32 位二进制来表示像素值.例如 ...
最新文章
- 使用tcpwrapper实现访问控制功能
- 网络营销——网络营销专员如何加强企业网站推广能力
- iOS12-Swift5-Date转化为String:DateFormatter
- java 操作序列_JAVA序列化操作详解
- python百分号用法_python百分号%—%s、%d、%f
- java weblogic多数据源,039 在weblogic下部署jndi的多数据源
- 多核处理器_游戏爱好者的福音!AMD全新一代高性能多核处理器3950X
- html 盒子写法,CSS盒子模型
- C# .Net ListT中Remove()、RemoveAt()、RemoveRange()、RemoveAll()的区别,ListT删除汇总
- 小程序模仿通讯录制作
- ARUA2017创新转型峰会(ATIC)启动上海
- win10易升_电脑win7系统免费自动升级至win10系统,获得持续软件和安全更新
- bit与Byte,KB与KiB,MB与MiB,GB与GiB等
- 重复测量方差分析步骤汇总
- linux最全网络监控命令梳理及评测
- list转Tree和手动过滤TreeNode
- Java构造方法以及构造方法的重载
- Looksery Cup 2015 F - Yura and Developers 单调栈+启发式合并
- 工欲善其事必先利其器之Mac ps快捷键
- 使用ngrok进行域名映射