图集压缩格式设置ASTC不生效的原因

   日期:2020-07-13     浏览:112    评论:0    
核心提示:最近在做性能优化,发现图集占用内存比较大,想做下优化,最简单的办法,修改压缩格式,我们项目以前用的大部分UI图集还是RGBA 16bit,那肯定要改成ASTC了。说做就做,一通改完以后,真机运行,天,为什么内存比原先的还大了1倍。一张2048*2048的图集,压缩格式设置为ASTC,但运行时内存占用却是16M! 很明显ASTC没生效,用了RGBA 32bit的格式PS:官方文档友情提醒:如果使用目标平台不支持的纹理压缩格式,则纹理将被解压缩为RGBA 32,并与压缩的纹理一起存储在内存中。发生这种情况时_

最近在做性能优化,发现图集占用内存比较大,想做下优化,最简单的办法,修改压缩格式,我们项目以前用的大部分UI图集还是RGBA 16bit,那肯定要改成ASTC了。

说做就做,一通改完以后,真机运行,天,为什么内存比原先的还大了1倍。一张2048*2048的图集,压缩格式设置为ASTC,但运行时内存占用却是16M! 很明显ASTC没生效,用了RGBA 32bit的格式
PS:官方文档友情提醒:如果使用目标平台不支持的纹理压缩格式,则纹理将被解压缩为RGBA 32,并与压缩的纹理一起存储在内存中。发生这种情况时,会浪费时间对纹理进行解压缩,并且会丢失内存,因为您将纹理存储两次。

所有是我的手机不支持了??

官方提供的支持的设备
IOS手机从A8就支持了(iPhone6及以上)

继续使用Unity提供的API打印一下是否支持:(打印结果false)
SystemInfo.SupportsTextureFormat(TextureFormat.RGB_ASTC_6x6); //具体枚举自己看下就行(我的版本是48-59代表ASTC所有格式)

中间历程省略。。。。。。

最终找到原因:

Edit > Project Settings > Player>Other Settings中有一个Auto Graphics API
目前IOS 平台可以添加三个 metal,OpenGL ES 2.0,OpenGL ES 3.0
如果你的真机支持ASTC,并且Unity版本>= Unity5.5(我的是Unity2017.4,具体最低支持的忘记啦,自行百度吧),图集设置ASTC后仍然不生效,请看这里的选项。如果使用的是OpenGL ES 2.0,恭喜,这个就是不支持。 其他两个测试都是支持的。
那么区别是什么呢,请看:
OpenGL ES 2.0,OpenGL ES 3.0 的区别

那么能改吗?OpenGL ES 2.0改成3.0 只要面向用户的设备支持就行,如果不支持,它会顺位用下一个API,想要兼容的话就添加两个就可以。
对于支持的设备请看:
metal 的最低支持iphone5s ios9,这个被苹果吹爆,但没研究过,有兴趣的童鞋可以自己查下。

最后PS一下官方对于这个选项的解释:
https://docs.unity3d.com/2017.4/Documentation/Manual/GraphicsAPIs.html

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服