将字节 [] 从 Unity C# 传递到 Android Java 而不复制指针?

问题描述

是否可以将字节 [] 从 Unity C# 传递到 Android Java 而无需复制它?换句话说,尽可能快地传输它,可能是作为一个指针。

用例是发送一个长度为 1920x1080 的 byte[](派生自 .GetRawTextureData,每秒 30 次。目前我正在将 byte[] 作为参数传递到 AndroidJavaObject 方法中调用但速度太慢(每次调用 100 毫秒)。有什么想法吗?

解决方法

这不是每次看到的答案,但我意识到通过 JNI 发送 8MB 的 sbytes 只需要大约 7 毫秒(我在第一次尝试时没有正确分析它)。发送 sbytes 比发送 bytes 快得多,因为 bytes 无论如何都必须转换为 bytes(C# 字节没有签名,因此必须将它们转换,因为 Java 使用有符号字节)并且转换的执行非常缓慢。此外,您可以直接在 sbytes 中工作,这进一步提高了性能并减少了使用引用的需要。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...