1

今天我发现了一件让我很疑惑的事情。我有三星 Exynos 4412 ARM9 CPU,它有一个 GPU400(四核)。我试图通过所有已知的方法从 GPU 到 CPU 获取纹理,它真的很慢。PC 平台的现代 CPU 和 GPU 也会出现相同的情况和缓慢的速度。我想知道这是怎么发生的,三星 Exynos 是一个 SoC,它们都有相同的内存,我不应该关心总线。为什么会这样?

从 GPU 到 CPU 的数据通过多种方法传输,我尝试过 glReadpixels、gltexSubImage2D、gltexImage2d、FBO。在纹理 1024*1024 24 位上使用任何这些方法时,帧速率从 40FPS 下降到 7FPs 或 7FPS。

4

1 回答 1

2

从 OpenGL 论坛获取的可能答案:

  • 延迟:读取命令到达硬件需要时间。
  • OpenGL 命令缓冲:读取数据需要 OpenGL 驱动程序完成所有未完成的命令。
  • 硬件缓冲:在进行回读之前,硬件必须清空所有 GPU 核心管道。

可能的解决方案: - 在 GPU 内部将数据复制到另一个位置,并在计算后将其读回一些帧。这应该允许写入该位置的所有内容在您尝试读取之前完成。

于 2013-02-21T18:56:03.007 回答