gpt4 book ai didi

java - Unity 4.3 + Android - 我需要在 1080 x 1920 下至少以 30 FPS 更新 Texture2D 或 RenderTexture

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:55 26 4
gpt4 key购买 nike

快速说明 - 如果您的 Unity/Android 代码将在 Unity 端以 30+ FPS 播放h264 视频流,而不是完整视频,并且可以分享它,那会救我!

描述:我有 Unity Pro 4.3。第一种简单的方法是创建一个 Color32 [1080*1920] 数组,并将元素分配给通过数学函数创建的值。 主要目标 是创建一个 Texture2D 并为像素使用颜色数组,并能够以 30+ FPS 的速度逐帧更新它们。以下是我目前的结果:

仅限 Texture2D Unity 端:

  • 纹理的分配不是问题。
  • Apply() 的使用是个大问题。这是实际更新纹理所必需的。
  • 使用 1080 x 1920 纹理以 0.5 FPS 的速度运行。当然太慢了。

Unity 和 Android 端之间的 Texture2D:

  • 我看过并尝试使用 Android Java OpenGL ES 示例。
  • 如果我能够找到解决方案,这听起来仍然是最好的方法。
  • 我正在通过桥将 Texture2D 的“指针/ID”传递到 Java 端。
  • 尝试使用“指针/ID”在 Java 端更新 Texture2D,方法如下:glBindTexture(GL_TEXTURE_2D, texturePtr);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, s_resolutionWidth, s_resolutionHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, 缓冲区);
  • 使用这个“指针/ID”,我能够进行多次调用,表明在 GL 调用之前和之后在 Java 端一切都应该是合法的。
  • 这声称这是答案,但这没有任何影响,直到我在 Unity 端使用 Apply(),这当然会毁了它。
  • 我的假设是 Java 代码已更改,我需要弄清楚如何解决我的问题。

渲染纹理:

  • 这也是我认为可能的答案。
  • 它声称可以更快地更新纹理变化,但它似乎只能通过相机设置纹理。
  • 我想用数学上至少计算出 30 FPS 的简单 1080 帧来更新 RenderTextures。
  • 不幸的是,我发现这样做的唯一方法是使用 Texture2D,当然需要 Apply()!
  • 所以目前看来,这似乎接近可用,但总的来说还不能用。

我真的需要知道在 Unity 中以 30 FPS 更新纹理的最佳方法。一旦我知道如何做到这一点,即使是最简单的形式,我也能取得进步。

最佳答案

您不能指望使用标准的 glTexImage2D() 函数可以达到接近 30 fps 的速度,因为它会复制和转换每张图像,这使得速度太慢。该功能仅适用于加载一次并使用多次的静态图像。 Android 平台通过使用 EGL 图像扩展来避免此功能,应用程序也可以这样做。但是,它确实需要 native 代码。本文给出了 Android 的介绍和示例代码:

http://software.intel.com/en-us/articles/using-opengl-es-to-accelerate-apps-with-legacy-2d-guis

关于java - Unity 4.3 + Android - 我需要在 1080 x 1920 下至少以 30 FPS 更新 Texture2D 或 RenderTexture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com