如何Unity在Android设备上使用切分Alpha(split alpha channel)的ETC1纹理格式?

2回答

如何Unity在Android设备上使用切分Alpha(split alpha channel)的ETC1纹理格式?

提问者 终点 2016-05-16 2.4k浏览

我们是这样设置Texture的压缩参数的:

说明: http://file.tig.oa.com/download/cfs/richtext/20160315/1458038599507.1458039729.png

 

在小米4C上,连上Profiler看到:

说明: http://file.tig.oa.com/download/cfs/richtext/20160315/1458038762857.1458039771.png

说明: http://file.tig.oa.com/download/cfs/richtext/20160315/AD5E3DB9C4B04AC98AE1C1D926009C67.1458039783.png说明: http://baike.oa.com/v2/Question/Detail/3716

看起来是使用了ETC2格式

但是,在MX3中,看到的是这样的:

说明: http://file.tig.oa.com/download/cfs/richtext/20160315/1458038897796.1458039851.png

这是使用了RGBA8直接加载的?

 

这两台机器打开的是同一个APK

 

是不是Unity在打包APK是,对于我们选择压缩的带有ALPHA的纹理,都保留了两份?一份ETC2一份RGBA8?然后根据具体硬件对于ETC2的支持情况选择性加载?

 

那拆分AlphaETC1格式是不是不能很好地支持那?我们怎么样才能只保留一份Texture资源,并且使用ETC1格式?

 

问题类型 : 图形渲染,内存管理     

开发平台 : Windows 7     

发布平台 : Android     

Unity版本 : Unity Pro     

版本号 : 5.3.3

快来消灭0回答吧

{{ dataList.answer_count | view-format }}回答
  • Unity官方专家 2016-05-16 17:51

    1、Unity在打包时,不会保留两份纹理,所以不存在一份ETC2 和RGBA8 的问题; 

    2、按照你们提供的压缩参数,unity 产生的压缩贴图格式是ETC1,之所以在小米4C上看到的是ETC2,是因为ETC2 是 android 默认的压缩格式; 

    3、根据你们提供的MX3上的截图,怎么看出来是RGB格式啊? 根据文件大小分析,应该不是RGB格式的贴图。 


    2评论
  • ivyzyshao 2017-02-05 15:02
    官方的这个回答有问题吧。
     1.OK 
     2.之所以在小米4C上看到的是ETC2,是因为设置的Split Alpha Channel没生效,如果生效,显示的格式应该是Interal Format: RGB4_ETC2_EAC 兼容ETC1,4bits/pixel  Size:1024*512*4/8/1024=256KB,而不是512KB。
    3. 根据截图里贴图的memory占用大小,确实不是RGB格式,是RGBA格式。 1024*512*32/8/1024/1024=2.0M
    根本原因是Android平台下ETC1的Split Alpha Channel没生效,请提问者注意检查Unity的版本,据我的实践,Unity5.3版本开始ETC1的Split Alpha Channel才生效,另外BuildSetting里Texture Compression的格式指定为ETC吧。 
    友情提示:
    1. ETC1格式的图片,只有在Unity4.x里,Inner Format才显示为ETC1-RGB8,在Unity5.x里显示为RGB4_ETC2_EAC,都为4bpp,无妨。
    2. 如果没能成功拆分Alpha通道,Android机器会默认使用RGBA8_ETC2_EAC格式,针对不支持ETC2的Android机,会在第一次运行时将贴图转化成RGBA 32bpp。
    0评论
  • {{ answer.user.NickName }} {{ answer.profession }} {{ answer.created_at | time-format }}
    专家回答
    {{{ answer.answer }}}
    {{ answer.answer_count | view-format }}评论
加载中... 查看更多回答