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兼容性问题相关推荐

  1. Android 系统(205)---MTK平台分区回读

    MTK平台分区回读 有时遇到各种开机卡死或重启问题,往往我们依靠分区回读的方法来验证是否为软件问题. 在MTK平台我们利用flash_tool工具来回读分区,简单归结为一下步骤. 1.首先选择Down ...

  2. 【100个 Unity踩坑小知识点】| Unity调用API ,动态获取Android权限,附带所有Android权限表格

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  3. 【转】Android兼容性测试CTS --环境搭建、测试执行、结果分析

    原文网址:http://www.cnblogs.com/zh-ya-jing/p/4396918.html 为了确保Android应用能够在所有兼容Android的设备上正确运行,并且保持相似的用户体 ...

  4. UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢

    UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢 实践证明,以下东西都是协程,并非线程(thread): 1,WWW 2,AssetBundle.LoadFromFileAs ...

  5. 取消一个正在执行的异步回发

    javascript代码:      //pageLoad函数在成功更新后隐藏提示面板      function pageLoad()        {       showmessage(&quo ...

  6. android 兼容性定义,谷歌释出 Android 7.0 兼容性定义文件,史上最严

    原标题:谷歌释出 Android 7.0 兼容性定义文件,史上最严 每次跟随 Android 系统的更新,谷歌每年也会更新 Android 兼容性定义文档来确保 OEM 厂商的设备能够正常预装谷歌全家 ...

  7. CTS(16 )---Android 兼容性定义文档

    Android 兼容性定义文档 欢迎阅读 Android 兼容性定义文档 (CDD).本文档列举了设备需要满足哪些要求才能与最新的 Android 版本兼容.为了与 Android 兼容,设备实现必须 ...

  8. CTS(15)---Android 兼容性

    Android 兼容性 Android 的目的是构建一个开放平台,供开发者打造创新应用. Android 兼容性计划定义了 Android 平台的技术细节,并为原始设备制造商 (OEM) 提供了各种工 ...

  9. CTS(12)---android 兼容性测试 CTS 测试过程

    android 兼容性测试 CTS 测试过程 写这个博客的时候是为了记忆,建议大家还是看官方的说明,官方说的很清楚,不想把官方大段大段的拷贝到这里,官方的的确说的很清楚: http://source. ...

  10. 由Unity發佈到Google Play (Android Market)的步驟

    由Unity發佈到Google Play (Android Market)的步驟 Unity輸出設定與Keystore建立 *注意:妥善保留Keystore 因為日後更新版本會再用到 輸出解析度選擇( ...

最新文章

  1. Kazoo安装和使用
  2. ssh免密连接远程服务器
  3. 翟季冬:基于国产超算的百万亿参数超大预训练模型训练方法
  4. python篮球-用Python把蔡徐坤打篮球视频转换成字符动画!
  5. 如何删除有病毒的网站?
  6. 机器学习模型开发必读:开源数据库最全盘点
  7. 创建了一个表之后怎么再次在表中添加字段和字段显示位置_筛选数据透视表中的数据...
  8. Leetcode每日一题:118 + 119.pascals-triangle I and II(杨辉三角1和2)
  9. 【英语】Flying By Dream---English
  10. 遍历hashmap 的四种方法
  11. php setheader,PHP-MPDF:如何删除setHeader()和setFooter()边框
  12. 动物统计 nyoj286
  13. 表单复选框按钮全选-取消全选小案例
  14. ASP.NET 学习路线图
  15. 魔板(最小步数模型)
  16. 什么是构造函数及定义
  17. 小 V 视频号下载工具(可下载所有视频号中的视频+公众号中的部分视频、音频)
  18. 72小时灵感冲刺,创意就该这么玩 | LigaAI Hackathon特别策划
  19. 用pandas生成excel文件示例,并调整excel的格式或样式
  20. 入门oracleDBA面试题

热门文章

  1. 如何从零创造一个围棋AI
  2. 网络打印机计算机服务,在Windows7中添加网络打印机的解决方案提示“本地打印机后台处理程序服务未运行”...
  3. jQuery插件库免下载做法
  4. sol日历只能在android,日历本应如此优美 Sol日历For Android体验
  5. 日期计算器输入天数计算日期_如何在Windows计算器中执行日期计算
  6. 【C++】std::numeric_limits 类型对应最值查询
  7. 【简单易懂的Unity5 Shader着色器入门教程】 笔记
  8. [导入]美国得州5岁男童智商高达130(图)
  9. 浩辰3D软件入门攻略:什么是有限元分析?
  10. 参考 | 升级 Win11 移动热点开不了或者开了连不上