从OpenGL ES 2.0 / 3.0回读的最快方式

时间:2013-11-09 12:55:08

标签: android opengl-es opengl-es-2.0 gpgpu glreadpixels

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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