1)Android平台压缩纹理ETC2 VS ASTC
​2)Unity使用Profiler和UWA内存差异巨大
3)Unity 2020 IL2CPP打包异常
4)TouchScreenKeyboardWrap在PC模式下打包报错


这是第301篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Texture

Q:1. 2022年在Android平台的ASTC支持度怎么样了,预计2023年上的游戏能不能上ASTC?
1.1 跟iOS统一方便处理
1.2 更多选择控制压缩比例 44->1212
1.3 效果比ETC2更好
1.4 ASTC有没有什么坑,看到有说华为部分机器不支持,会黑屏

网上只找到下面这个数据,2020年9月,ASTC 77%。
在 Android App Bundle 中指定目标纹理压缩格式  |  Android 开发者  |  Android Developers

2. 我理解的压缩纹理是CPU不用解压,直接传输给GPU,直接GPU硬件采样。相对于采样ARGB32格式,采样压缩纹理的消耗是不是更高点,还是可以忽略不计?

3. 移动平台纹理是否是2份?CPU一份,GPU显存一份,还是共享同一份?

4. ASTC/ETC2的压缩纹理尺寸是否需要2的幂?网上有些说法是非2的幂纹理加载到显存的时候会进行转换成2的幂,转换过程耗时,会导致卡顿。
Unity导入图片尺寸大小和压缩格式的问题_林新发的博客-CSDN博客_unity可以导入什么格式的图片

我做过以下测试:
1. AssetBundle内的纹理尺寸是原始尺寸。
2. Mumu模拟器+GPA纹理尺寸是原始尺寸,格式转换成了ARGB32。
3. Adreno+高通真机,目前还在测试,找的机器连不上Adreno Profiler。

A1:我2017年立项的时候跟你一样处理过这个问题,我当时的策略是主包使用ASTC,启动更新的时候判断玩家是否支持ETC2,不支持的话下载ETC2版本的AssetBundle资源。资源在线上是完全独立的2份资源(打包的时候每次打包2份独立资源)。当年是为了海外做的这个兼容。经过这几年各个大厂的洗礼,直接ASTC就行了。如果你们的游戏类型一定要下探到那么老的机器,就像我那种双保险的做法。

1.  黑屏的问题没遇到。ETC2反而因为压缩算法不好,部分颜色失真,导致你在做部分PBR效果的时候,会有问题。
2. 需要硬件支持,就是因为不能用CPU去处理这种软解压跟软压缩,可以忽略。
3. 移动平台GPU跟CPU是共享一个内存,但是GPU会独立开辟一份内存,所以会有2份。开启了Mipmap的情况下不是单纯的2份相同内存,所以还有Texture Streaming这种方式来减少贴图内存占用。
4. ASTC不需要。

至于你的测试:
Mumu模拟器在《楚留香》出来的时候就支持ASTC,后面吃鸡游戏风靡的时候更是所有模拟器都支持了,不支持的都要被淘汰。这块可以不用考虑。如果不是单独为了发行模拟器渠道,大部分情况下,发行公司都是要求禁用模拟器登录的。

感谢简单就好@UWA问答社区提供了回答

A2:1. 关于ASTC的支持度,题主查的数据本身可以作为参考,但还需要结合考虑项目发行的市场。比如实际上对于中国市场而言ASTC的覆盖率已经非常高,而对于东南亚南美等海外市场则还要酌情;

2. 常见的压缩纹理是直接降低纹理资源质量,以质量换性能的行为,它不会在GPU端重新解压缩,相反在内存、带宽等方面都有所优化;

3. 只有当纹理资源需要运行时修改、开启了Read/Write Enable选项时,才会向CPU复制一份,否则就只有GPU的一份;

4. ASTC对分辨率没有需求;ETC2要求分辨率为4的倍数,而非2的次幂;特别地,不论是ASTC还是ETC2,如果开启了Mipmap,则必须是2的次幂,否则同样会压缩失败。

感谢Faust@UWA问答社区提供了回答,欢迎大家转至社区交流:
Unity2020 il2cpp 代码多的情况下,直接打包出错,使用obb模式或导出到AndroidStudio工程再打apk没问题 -- UWA问答:帮助开发者找到更好的答案


Memory

Q:Unity使用Profiler和UWA内存差异为何差别这么大?

A:Profiler显示的是引擎真实的分配内存,但这个内存在OS中并不仅仅是这些,它会分配更多的内存Page,而且不同的OS版本,不同的厂商分配的都不一样。

同时,OS层还会启动很多自身的Lib,比如渲染相关的库、文件加载的加速库等等,这些内存的分配,都是Unity统计不到的。

除此之外,还有虚拟机的第三方库,比如Lua等,这些的内存是会被统计到PSS中,但不会被统计到Profiler中,游戏启动时的各种渠道库,也是如此。

所以,PSS比Reserved大是正常的。

但如果你发现PSS比Reserved大了快2倍了,那一定是大家某些库的内存分配过大,比如Lua、Wwise或其他大家使用的第三方库。

感谢芭妮妮@UWA问答社区提供了回答,欢迎大家转至社区交流:
Unity2020 il2cpp 代码多的情况下,直接打包出错,使用obb模式或导出到AndroidStudio工程再打apk没问题 -- UWA问答:帮助开发者找到更好的答案


Android

Q:Unity版本2020.2.3,在IL2CPP打包Android的编译过程报错,因为项目中用的Puerts框架,需要生成很多Wrap类。如果打包时勾选Split Application Binary,也用OBB分包情况下,使用Unity可以直接导出到APK和OBB。但如果不勾选,编译会报错。

同样不勾选Split Application Binary,在Build时,Export Project导出到AndroidStudio工程再生成APK也不会有问题。请问有遇到过这样的问题吗?

Exception: Unity.IL2CPP.Building.BuilderFailedException: D:\DevEnvironment\android-ndk-r19\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++ @“C:\Users\Administrator\AppData\Local\Temp\tmp30FE.tmp” -o “D:\workroot\Crusher\Crusher\Library\il2cpp_android_arm64-v8a\il2cpp_cache\linkresult_B322E1396ADEEC5519CBECC8D02E669C\libil2cpp.so” -shared -Wl,-soname,libil2cpp.so -Wl,–no-undefined -Wl,-z,noexecstack -Wl,–gc-sections -Wl,–build-id -stdlib=libc++ -static-libstdc++ -target aarch64-linux-android21 -Wl,–wrap,sigaction “D:\Softwares\Unity2020.2.3f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Development\StaticLibs\arm64-v8a\baselib.a” -llog -rdynamic -fuse-ld=bfd.exe
报错详情可戳原问答查看。

A1:尝试增加JVM的内存,或者指定一个NDK版本。

感谢廖武兴@UWA问答社区提供了回答

A2:推测可能是静态数组太大了,编译器的内存模型不够。可以自己添加IL2CPP的编译选项,注意下这个:
additional relocation overflows omitted from the output

感谢thrt520@UWA问答社区提供了回答

A3:看上去是NDK那边失败了,可以尝试一下不要勾选Development Build,可能是生成的二进制文件太大导致的奔溃。

感谢萧小俊@UWA问答社区提供了回答

A4:亲测Maximun JVM heap size,MBytes增加JVM内存有效:

感谢题主Bomber@UWA问答社区提供了回答,欢迎大家转至社区交流:
Unity2020 il2cpp 代码多的情况下,直接打包出错,使用obb模式或导出到AndroidStudio工程再打apk没问题 -- UWA问答:帮助开发者找到更好的答案


Script

Q:在Android下可以,切换到PC打包的时候就报错了。请问这是什么意思?如何解决呢?

A:有文档介绍说:Only native iPhone, Android, and Windows Store Apps are supported. 所以加个宏处理一下就可以了。
Unity - Scripting API: TouchScreenKeyboard

感谢张迪@UWA问答社区提供了回答,欢迎大家转至社区交流:
Unity2020 il2cpp 代码多的情况下,直接打包出错,使用obb模式或导出到AndroidStudio工程再打apk没问题 -- UWA问答:帮助开发者找到更好的答案

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)

Android平台压缩纹理ETC2 VS ASTC相关推荐

  1. android,ETC1压缩纹理带alpha通道

    天降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行指乱其所为,所以动心忍性,曾益其所不能. --<孟子> 1,ETC纹理. opengl2.0的所有android机器支持ET ...

  2. Android平台上基于OpenGl渲染yuv视频

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 更多音视频开发文章,请看:音视频开发专栏 介绍一个自己刚出炉的音视频播放录制开源项目 前言 这是我音视频专栏的第一篇实例解析,也算是 ...

  3. Stage3D的压缩纹理- ATF工具介绍跟下载

    那么这是什么呢? 首先,让我们开始谈论压缩纹理. 在任何技术里GPU编程都是一样的,你有两个选择,你可以选用压缩或没压缩的纹理,那么,有什么区别呢? 当使用未压缩的纹理,将一个png 图形文件上传至G ...

  4. 游戏中纹理压缩格式之Texture压缩纹理

    记载目录 1.杂言杂语 2.纹理格式与文件格式的区别 3.常见的纹理格式和应用场合及硬件的特定要求常见的压缩纹理格式硬件需求 4.压缩纹理特殊处理RGBA16 + Dithering 处理ETC1的通 ...

  5. 各种移动GPU压缩纹理的使用方法

    介绍了各种移动设备所使用的GPU,以及各个GPU所支持的压缩纹理的格式和使用方法. 1. 移动GPU大全 目前移动市场的GPU主要有四大厂商系列: 1)Imagination Technologies ...

  6. 在 Android* 平台上设置原生 OpenGL ES*

    Setting up Native OpenGL ES* on Android* Platforms final.docx BSD2.0.txt ParticleSystemNDK.zip READM ...

  7. 切图小贴士-手机Android平台“点九”的切图

    用户手中看到的产品界面,并非设计师呕心沥血创作的效果图,而是一个个单独的切图经由开发同学技术实现.切图作为设计师与开发者之间的桥梁,它的作用很关键,合适的切图.精准的位置可以最大限度的还原效果图的设计 ...

  8. 手机Android平台“点九”的切图方法

    http://blog.sina.com.cn/s/blog_687bea510101g6dj.html 用户手中看到的产品界面,并非设计师呕心沥血创作的效果图,而是一个个单独的切图经由开发同学技术实 ...

  9. 音视频开发总结之二Android平台相关

    一. 音视频采集流程 串联整个音视频录制流程,完成音视频的采集.编码.封包成 mp4 输出. 通过摄像头和麦克风获得实时的音视频数据: 播放流程: 获取流->解码->播放. 录制播放路程: ...

  10. 基于Android平台的流媒体播放器的设计

    from: 基于Android平台的流媒体播放器的设计 1引 言 随着移动通信技术和多媒体技术的迅速发展,融合手机.网络.多媒体技术为一体的视频监控技术也有了长足的进步,通过移动通信网络提供流媒体服务 ...

最新文章

  1. 机房收费系统【VB版】——前期准备
  2. 三国演义人物出场统计代码含义_实例2之《三国演义》人物出场统计
  3. Uva 11292 The Dragon of Loowater 模拟题
  4. 解决百度网盘(百度云)分享链接不存在失效、分享的文件已经被取消的问题
  5. GridView点击行任意位置设为选择状态
  6. Visual Studio 批量注释 快捷键
  7. Codeforces940(A-F)
  8. 步步为营-75-Cookie简介
  9. fstream与 C 风格(例如fread 和 fwrite )两种读写文件方法的效率比较
  10. Linux下进程通信方式(简要概述)
  11. 打造轻量级的实体类数据容器
  12. Android--sharepreference总结
  13. ConcurrentHashMap源码(JDK1.8)
  14. 流氓软件mcafee之Mac端卸载
  15. 【推荐算法论文阅读】STAMP: Short-Term Attention/Memory Priority Model for Session-based Recommendation
  16. 职高学计算机平面设计要买电脑吗,职高生学好计算机平面设计课之我见
  17. 用ESP8266获取网页信息+获取b站粉丝数案例
  18. 人类杏仁核特异性连接与心理健康维度的关系
  19. 配置计算机系统doc,计算机的基本配置.doc
  20. 无线VoIP技术的现状

热门文章

  1. php帮助文档无法打开,电脑不能打开文件secedit.chm怎么办
  2. 每日英语听力 Mac
  3. 7-8 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company
  4. mac 打开网页慢_苹果笔记本打开网页很慢是什么原因
  5. D3D11 自由视角相机
  6. 局域网有几台电脑频繁断网_关于电脑经常掉线的那些事,解决方法
  7. 新版标准日本语初级_第四十五课
  8. 北京地铁21号线_燕郊地铁M23号线是什么鬼?
  9. cos和sin转换公式
  10. 从产品角度看滴滴事件,滴滴顺风车业务存在的问题