0

从 OpenGL 上下文中获取数据的最快方法是什么?目前我正在渲染纹理并使用 glReadPixels() 读回结果。

在三星 S3 Mini(I8190、Android 4.1.2、GPU Mali-400 MP、CPU NovaThor U8420 DualCore)上,640x480x4(分辨率x颜色)字节 ~ 1.3 MB 的数据大约需要 40 毫秒。在 LG G2(LG-D802、Android 4.2.2、GPU Adreno 330、CPU Snapdragon S4 Pro QuadCore)上,相同的应用程序大约需要 110 毫秒。

LG G2 应该更快,对 NDK/C++ 排序应用程序进行基准测试显示,其性能比 S3 Mini 高 2 倍以上(CPU 性能)。因此,如果内存带宽(memcpy/DMA)是限制,我假设 glReadPixels() 上至少有相同的数字。我猜,Qualcomm/Adreno (LG) 要么在一些低优先级线程中传输数据,要么在软件中执行一些颜色转换 (X -> RGBA)。

是否有另一种更快的方式将数据从 GPU(OpenGL ES + 供应商扩展)传输到 CPU?

4

1 回答 1

0

glReadPixels 是最快的方法。因为您没有直接访问 gpu 内存。只有开源的mali驱动程序有它。

于 2013-11-09T13:15:21.603 回答