【Unity】关于GPU异步回读Android兼容性问题
1、前言
我们需要做RVT的功能,所以需要使用Unity的GPU 异步回读的功能。也就是使用如下API:AsyncGPUReadback 。其官方文档如下:
Unity - Scripting API: AsyncGPUReadback
那么这个API是否能无脑使用呢?
Unity版本:2018.4.36f1
2、 OpenGL不支持GPU异步回读?
但是在实际使用时,发现其兼容性有问题:这个API在安卓手机上,只能在Vulcan模式下使用,而在OpenGL上不能使用。 而关于这一点,Unity的官方回复如下:
也就是 AsyncGPUReadback 这个接口,不支持OpenGL(在安卓上只支持Vulcan)。在Unity 2021.2 + 的版本,Unity提供了对OpenGL的支持。
正常情况下,就只需要设定打包时用Vulcan即可。但是我这个项目还有别的问题:
3、 Vulcan不支持视频播放
如果使用Vulcan模式,会导致视频播放不出来。无论是Unity原生的API,还是第三方插件,都无法播放视频。
我们项目使用了 AVPro Video 这个插件,在Vulcan模式下报错:
在其官方用户手册的解释如下:
注意,上面这个文档是 AVPro Video的最新版本文档。也就是说,即便是升级到最高级的 AVPro Video ,也是不支持 Vulcan 的!
其他市面上的主流插件,也没有提供对Unity2018版本、以及Vulcan的支持。如果使用Unity的原生播放视频的插件 (Video Player),也是会遇到同样的问题:
在Unity的官方文档,说明如下:
如果需要在Vulcan模式下播放视频,解决方案只有一个:升级Unity至2019.1以上。然而我这个项目并不能升级,因此只有放弃Vulcan。
4、 在OpenGL上实现GPU异步回读
这里需要使用一个插件: AsyncGPUReadbackPlugin/UnityExampleProject at Android · kidapu/AsyncGPUReadbackPlugin · GitHubUnity plugin that provide AsyncGPUReadback for OpenGL - AsyncGPUReadbackPlugin/UnityExampleProject at Android · kidapu/AsyncGPUReadbackPluginhttps://github.com/kidapu/AsyncGPUReadbackPlugin/tree/Android/UnityExampleProject 这个插件是在OpenGL上实现异步回读的,实测在2018上也可以使用。具体的接入方法在Git工程里面有写,其接口与Unity原生接口类似,没有什么难度。
性能上,与Unity原生的 AsyncGPUReadback 差不多 。不过要注意的是,他这个原本的工程里只有 armeabi-v7a 的架构,如果需要 arm64-v8a 架构需要自己在 Android Studio 中构建。因为已经有源代码了,所以构建也很简单。
注意,这个插件不支持 x86 架构,因此在模拟器上会有问题。
【Unity】关于GPU异步回读Android兼容性问题相关推荐
- Android 系统(205)---MTK平台分区回读
MTK平台分区回读 有时遇到各种开机卡死或重启问题,往往我们依靠分区回读的方法来验证是否为软件问题. 在MTK平台我们利用flash_tool工具来回读分区,简单归结为一下步骤. 1.首先选择Down ...
- 【100个 Unity踩坑小知识点】| Unity调用API ,动态获取Android权限,附带所有Android权限表格
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...
- 【转】Android兼容性测试CTS --环境搭建、测试执行、结果分析
原文网址:http://www.cnblogs.com/zh-ya-jing/p/4396918.html 为了确保Android应用能够在所有兼容Android的设备上正确运行,并且保持相似的用户体 ...
- UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢
UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢 实践证明,以下东西都是协程,并非线程(thread): 1,WWW 2,AssetBundle.LoadFromFileAs ...
- 取消一个正在执行的异步回发
javascript代码: //pageLoad函数在成功更新后隐藏提示面板 function pageLoad() { showmessage(&quo ...
- android 兼容性定义,谷歌释出 Android 7.0 兼容性定义文件,史上最严
原标题:谷歌释出 Android 7.0 兼容性定义文件,史上最严 每次跟随 Android 系统的更新,谷歌每年也会更新 Android 兼容性定义文档来确保 OEM 厂商的设备能够正常预装谷歌全家 ...
- CTS(16 )---Android 兼容性定义文档
Android 兼容性定义文档 欢迎阅读 Android 兼容性定义文档 (CDD).本文档列举了设备需要满足哪些要求才能与最新的 Android 版本兼容.为了与 Android 兼容,设备实现必须 ...
- CTS(15)---Android 兼容性
Android 兼容性 Android 的目的是构建一个开放平台,供开发者打造创新应用. Android 兼容性计划定义了 Android 平台的技术细节,并为原始设备制造商 (OEM) 提供了各种工 ...
- CTS(12)---android 兼容性测试 CTS 测试过程
android 兼容性测试 CTS 测试过程 写这个博客的时候是为了记忆,建议大家还是看官方的说明,官方说的很清楚,不想把官方大段大段的拷贝到这里,官方的的确说的很清楚: http://source. ...
- 由Unity發佈到Google Play (Android Market)的步驟
由Unity發佈到Google Play (Android Market)的步驟 Unity輸出設定與Keystore建立 *注意:妥善保留Keystore 因為日後更新版本會再用到 輸出解析度選擇( ...
最新文章
- Kazoo安装和使用
- ssh免密连接远程服务器
- 翟季冬:基于国产超算的百万亿参数超大预训练模型训练方法
- python篮球-用Python把蔡徐坤打篮球视频转换成字符动画!
- 如何删除有病毒的网站?
- 机器学习模型开发必读:开源数据库最全盘点
- 创建了一个表之后怎么再次在表中添加字段和字段显示位置_筛选数据透视表中的数据...
- Leetcode每日一题:118 + 119.pascals-triangle I and II(杨辉三角1和2)
- 【英语】Flying By Dream---English
- 遍历hashmap 的四种方法
- php setheader,PHP-MPDF:如何删除setHeader()和setFooter()边框
- 动物统计 nyoj286
- 表单复选框按钮全选-取消全选小案例
- ASP.NET 学习路线图
- 魔板(最小步数模型)
- 什么是构造函数及定义
- 小 V 视频号下载工具(可下载所有视频号中的视频+公众号中的部分视频、音频)
- 72小时灵感冲刺,创意就该这么玩 | LigaAI Hackathon特别策划
- 用pandas生成excel文件示例,并调整excel的格式或样式
- 入门oracleDBA面试题
热门文章
- 如何从零创造一个围棋AI
- 网络打印机计算机服务,在Windows7中添加网络打印机的解决方案提示“本地打印机后台处理程序服务未运行”...
- jQuery插件库免下载做法
- sol日历只能在android,日历本应如此优美 Sol日历For Android体验
- 日期计算器输入天数计算日期_如何在Windows计算器中执行日期计算
- 【C++】std::numeric_limits 类型对应最值查询
- 【简单易懂的Unity5 Shader着色器入门教程】 笔记
- [导入]美国得州5岁男童智商高达130(图)
- 浩辰3D软件入门攻略:什么是有限元分析?
- 参考 | 升级 Win11 移动热点开不了或者开了连不上