我正在使用 Unity 制作一个 android 应用程序,我想探索使用 WebcamTexture 的替代方法。无论如何都不错,我已经设法在 1280x720@30fps 下获得了相当不错的性能,但我仍然想争取更多,特别是因为我仍然时不时地遇到明显的卡顿,并且考虑到我正在使用三星 S10 作为测试设备(我认为这个坏男孩有足够的果汁用于 1920x1080,但我错了)。
我的研究为我找到了一些方法,我不确定其中最值得推荐的方法。
创建一个 Java 插件并初始化 android 相机,通过 UnitySendMessage 将帧传递给 Unity,然后将它们应用到 Texture2D。 现在我假设这样的东西比 WebcamTexture 本身更重/更慢,但如果有人对此事有任何经验,请告诉我。
使用 AndroidJavaObject 和 AndroidJavaClass 直接访问 Camera2 API,设置相机并将帧传递给 texture2d,所有这些都来自 Unity。 我假设这比 Option 1 快,但仍然可能比 WebcamTexture 本身慢。
如果有一些性能技巧可以应用于 WebcamTexture 本身,那么我也愿意听取这些技巧。谷歌对提高 Android 上的 WebcamTexture 性能没有太多要说的。
感谢您花时间阅读本文!
到目前为止,我只使用了一个网络摄像头纹理,并且一直在左右调整设置,但没有任何实质性帮助。当我从 RawImage 切换到 Quad 来显示提要时,我确实看到了性能的显着提高,我不确定为什么会这样。
现在我一直在考虑直接从 C# 访问 Camera2 API 的想法,但它看起来非常高级和具体。在阅读实施此解决方案的所有必要文档之前,我想征求第二意见。