关于OpenGL ES中的纹理压缩
2015-08-19 10:57
519 查看
基于OpenGL ES的压缩纹理有常见的如下几种实现:
1. ETC1(Ericcson texture compression)
2. PVRTC(PowerVR texture compression)
3. ATITC(ATI texture compression)
对于使用NVIDIA Tegra2芯片的手机如Motorola XOOM,ATRIX和DRIOID BIONIC则支持如下的纹理压缩
4. S3TC(S3 texture compression)
ETC1:
ETC1格式是OpenGL ES图形标准的一部分,并且被所有的Android设备所支持。扩展名为: GL_OES_compressed_ETC1_RGB8_texture,不自持透明通道,所以仅能用于不透明纹理。
PVRTC:
被 用在Motorola的一些机器上,比如DROID系列。GPU为Imagination Technologies的PowerVR
SGX 530。OpenGL ES的扩展名为: GL_IMG_texture_compression_pvrtc,支持预处理压缩。当加载压缩纹理时,<internal format>参数支持如下几种格式:
COMPRESSED_RGB_PVRTC_4BPPV1_IMG (RGB 4 bit per pixel)
COMPRESSED_RGB_PVRTC_2BPPV1_IMG (RGB 2 bit per pixel)
COMPRESSED_RGBA_PVRTC_4BPPV1_IMG (RGB 4 bit per pixel with alpha channel)
COMPRESSED_RGBA_PVRTC_2BPPV1_IMG (RGB 2 bit per pixel with alpha channel)
ATITC:
当前使用该种纹理压缩的机器有Nexus One。支持的OpenGL ES扩展名为: GL_ATI_texture_compression_atitc。当加载压缩纹理时,<internal
format>参数支持如下类型的纹理:
ATC_RGB_AMD (RGB textures)
ATC_RGBA_EXPLICIT_ALPHA_AMD (RGB textures using explicit alpha encoding)
ATC_RGBA_INTERPOLATED_ALPHA_AMD (RGBA textures using interpolated
alpha encoding)
S3TC
也 被称为DXTC,在PC上广泛被使用,但是在移动设备上还是属于新鲜事物。在使用NVIDA芯片的手机上被使用。OpenGL ES扩展名为:
GL_EXT_texture_compression_dxt1和GL_EXT_texture_compression_s3tc。当加载压缩纹理 时,<internal format>的参数有如下几种格式:
GL_COMPRESSED_RGB_S3TC_DXT1 (RGB data is compressed, alpha is always
1.0)
GL_COMPRESSED_RGBA_S3TC_DXT1 (RGB data is compressed, alpha is either
1.0 or 0.0)
GL_COMPRESSED_RGBA_S3TC_DXT3 (RGB data is compressed, alpha is stored
as 4 bits)
GL_COMPRESSED_RGBA_S3TC_DXT5 (RGB data is compressed, alpha is a weighted
average of 8-bit values)
在程序在开始检测这些可用的扩展很重要。对于ETC1压缩来说,使用ETC1Util.isETC1Supported()即可。可以使用android.openGL.getString(GL10.GL_EXTENSIONS)解析字符串获取更多的可用扩展。
1. ETC1(Ericcson texture compression)
2. PVRTC(PowerVR texture compression)
3. ATITC(ATI texture compression)
对于使用NVIDIA Tegra2芯片的手机如Motorola XOOM,ATRIX和DRIOID BIONIC则支持如下的纹理压缩
4. S3TC(S3 texture compression)
ETC1:
ETC1格式是OpenGL ES图形标准的一部分,并且被所有的Android设备所支持。扩展名为: GL_OES_compressed_ETC1_RGB8_texture,不自持透明通道,所以仅能用于不透明纹理。
PVRTC:
被 用在Motorola的一些机器上,比如DROID系列。GPU为Imagination Technologies的PowerVR
SGX 530。OpenGL ES的扩展名为: GL_IMG_texture_compression_pvrtc,支持预处理压缩。当加载压缩纹理时,<internal format>参数支持如下几种格式:
COMPRESSED_RGB_PVRTC_4BPPV1_IMG (RGB 4 bit per pixel)
COMPRESSED_RGB_PVRTC_2BPPV1_IMG (RGB 2 bit per pixel)
COMPRESSED_RGBA_PVRTC_4BPPV1_IMG (RGB 4 bit per pixel with alpha channel)
COMPRESSED_RGBA_PVRTC_2BPPV1_IMG (RGB 2 bit per pixel with alpha channel)
ATITC:
当前使用该种纹理压缩的机器有Nexus One。支持的OpenGL ES扩展名为: GL_ATI_texture_compression_atitc。当加载压缩纹理时,<internal
format>参数支持如下类型的纹理:
ATC_RGB_AMD (RGB textures)
ATC_RGBA_EXPLICIT_ALPHA_AMD (RGB textures using explicit alpha encoding)
ATC_RGBA_INTERPOLATED_ALPHA_AMD (RGBA textures using interpolated
alpha encoding)
S3TC
也 被称为DXTC,在PC上广泛被使用,但是在移动设备上还是属于新鲜事物。在使用NVIDA芯片的手机上被使用。OpenGL ES扩展名为:
GL_EXT_texture_compression_dxt1和GL_EXT_texture_compression_s3tc。当加载压缩纹理 时,<internal format>的参数有如下几种格式:
GL_COMPRESSED_RGB_S3TC_DXT1 (RGB data is compressed, alpha is always
1.0)
GL_COMPRESSED_RGBA_S3TC_DXT1 (RGB data is compressed, alpha is either
1.0 or 0.0)
GL_COMPRESSED_RGBA_S3TC_DXT3 (RGB data is compressed, alpha is stored
as 4 bits)
GL_COMPRESSED_RGBA_S3TC_DXT5 (RGB data is compressed, alpha is a weighted
average of 8-bit values)
在程序在开始检测这些可用的扩展很重要。对于ETC1压缩来说,使用ETC1Util.isETC1Supported()即可。可以使用android.openGL.getString(GL10.GL_EXTENSIONS)解析字符串获取更多的可用扩展。
相关文章推荐
- 深刻理解Linux进程间通信(IPC)
- myeclipse +tomcat +..
- doGet和doPost不同使用以及安卓乱码问题解决案例总结
- Linux常用命令/知识
- for in语句中hasOwnProperty过滤原型属性
- ps aux命令显示的状态列中的Ss+,Rsl,R+,S<sl含义
- Linux--基础
- visualvm监控jvm及远程jvm监控方法
- openfire 域名问题
- Linux 信号列表
- linux配置java环境变量(详细)
- 8月第2周全球域名商(国际域名)新增注册量TOP15
- Linux 线程浅析
- 我的openwrt学习笔记(九):开发板访问虚拟机 ubuntu linux 文件方法
- linux基础之重要文件(四)
- linux底层的短延迟操作(下) -- ndelay,udelay,mdelay以及msleep,ssleep,msleep_interruptible
- 7月共处理钓鱼网站3062个:支付交易类占57.97%
- Linux设置和查看环境变量的方法
- linux内核makefile解析
- 关于Linux的 ps -l 命令,显示数据中F表示含义