问题描述
是否可以将字节 [] 从 Unity C# 传递到 Android Java 而无需复制它?换句话说,尽可能快地传输它,可能是作为一个指针。
用例是发送一个长度为 1920x1080 的 byte[](派生自 .GetRawTextureData,每秒 30 次。目前我正在将 byte[] 作为参数传递到 AndroidJavaObject
方法中调用但速度太慢(每次调用 100 毫秒)。有什么想法吗?
解决方法
这不是每次看到的答案,但我意识到通过 JNI 发送 8MB 的 sbytes
只需要大约 7 毫秒(我在第一次尝试时没有正确分析它)。发送 sbytes
比发送 bytes
快得多,因为 bytes
无论如何都必须转换为 bytes
(C# 字节没有签名,因此必须将它们转换,因为 Java 使用有符号字节)并且转换的执行非常缓慢。此外,您可以直接在 sbytes
中工作,这进一步提高了性能并减少了使用引用的需要。