对纹理进行Alpha通道分离的好处

我们正在权衡是否对纹理资源进行Alpha通道分离。现在发现,Android低端机上(OPENGL ES 2.0)使用Alpha分离,内存相当是两个ETC1的大小(相对RGBA32是小了很多),但是Shader中纹理采样会执行两次,这个采样其实对低端机消耗还是蛮大的吧?在iOS上分离是没有意义的,而且分离之后使用上会变麻烦,这样权衡之下,分离Alpha只是改善内存的话,优势看起来感觉不太明显,是否有更好的说法来说明分离的优势?

在Android平台上实施Alpha分离操作,是我们非常推荐的做法。如果项目中RGBA32、ARGB32格式的纹理较多,那么研发团队确实需要考虑尽可能将这些纹理转换成两张ETC1格式的问题。不仅内存占用可以降低为之前的1/4,同时加载效率上也会大幅提升。对于不同格式的纹理资源加载效率对比,可以查看我们之前的技术文章:加载模块深度解析之纹理篇。现在纹理的Alpha通道分离操作并不麻烦,网上已经有很多现成的代码可以使用,比如Unity一键图集生成工具。同时,分成两张ETC1纹理确实会增加一次纹理采样操作,但经过大量项目的真机实测,我们并未发现在运行时会出现性能波动。对于iOS平台来说,其PVRTC格式本身已经支持Alpha通道,所以RGBA32/ARGB32格式纹理直接转成PVRTC格式即可。但目前也有不少团队为了使Android和iOS版本开发统一,其在iOS版本上也将其Alpha通道拆开,变成两种PVRTC进行处理。这种做法会增大内存,但好处是开发环境可保持一致,因此研发团队可根据自身情况来考虑是否采用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值