优化OpenGL ES 应用 (4)

9.3 纹理压缩策略

压缩纹理可以显着改善图形应用程序的性能和加载时间,因为它可以减少纹理内存和总线带宽的使用。 与桌面OpenGL不同,OpenGL ES不提供应用程序在运行时压缩纹理的必要基础结构,因此纹理数据需要脱机编写。

Adreno GPU支持的重要纹理压缩格式为:

  • ATC –支持RGB和RGBA的专有Adreno纹理压缩格式组件布局
  • ETC –标准OpenGL ES 2.0纹理压缩格式,仅支持RGB组件布局
  • ETC2 –支持R,RG,RGB和RGBA组件布局以及sRGB纹理数据的标准OpenGL ES 3.0纹理压缩格式
  • ASTC – AEP中引入的纹理压缩格式,在达到压缩率的情况下,图像退化的程度非常低

QTI建议以下策略选择纹理压缩格式:

  1. 使用ASTC压缩(如果可用)。
  2. 否则,请使用ETC2压缩(如果可用)。
  3. 否则,请选择压缩格式,如下所示:
    a. 如果使用Alpha,则为ATC
    b. 如果不使用Alpha,则为ETC

ASTC是较新的格式,并非在所有内容创建管道上都受支持或优化。 同样,与RGBA格式相比,在Adreno硬件上可以更有效地处理ASTC的sRGB格式。

以下是将纹理转换为Adreno硬件的常用方法:

  • 设备上转换
  • 预包装
  • 下载

设备上转换涉及在游戏启动时进行的耗时的一次纹理资产转换。 预包装正确的纹理可以得到最优化的解决方案,但每个GPU都需要APK的替代版本。 下载需要GPU检测和互联网连接,但允许对每个GPU的确切纹理格式进行更多控制。 无论哪种情况,第一步都是创建压缩纹理。

可以使用Adreno SDK附带的Adreno纹理压缩和可视化工具或Adreno纹理转换器工具将纹理数据压缩为这些纹理压缩格式中的任何一种。 SDK中有一个“压缩纹理”教程,该教程介绍了如何在OpenGL ES应用程序中使用压缩纹理。

这些压缩格式的效果遍及图9-2至图9-15,包括使用Adreno纹理工具压缩的一种漫反射和一种对象空间普通RGB纹理。 这些图显示了原始纹理和使用每种压缩格式的压缩版本。 对于每个示例,都有一个差异图像显示原始版本和压缩版本之间的绝对差异。

9.3.1 漫反射纹理测试

此测试使用的漫反射纹理如图9-2所示。
在这里插入图片描述

9.3.1.1 ATC压缩

图9-3和图9-4显示了GL_ATC_RGB_AMD内部格式的使用。
在这里插入图片描述在这里插入图片描述

9.3.1.2 ETC1压缩

图9-5和图9-6显示了GL_ETC1_RGB8_OES内部格式的使用。
在这里插入图片描述在这里插入图片描述

9.3.1.3 ETC2压缩

图9-7和图9-8显示了GL_COMPRESSED_RGB8_ETC2内部格式的使用。
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值