Android 从OpenGL ES 2.0/3.0读取数据的最快方法
从OpenGL上下文获取数据的最快方法是什么?目前,我正在渲染纹理,并使用glReadPixels()读回结果 在三星S3 Mini(I8190、Android 4.1.2、GPU Mali-400 MP、CPU Novator U8420 DualCore)上,640x480x4(resolutionxcolor)字节~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(CPU性能)的2倍以上。因此,如果内存带宽(memcpy/DMA)是限制,我假设glReadPixels()上至少有相同的数字。我猜,高通公司/肾上腺公司(LG)要么在低优先级线程中传输数据,要么在软件中执行某种颜色转换(X->RGBA)Android 从OpenGL ES 2.0/3.0读取数据的最快方法,android,opengl-es,opengl-es-2.0,gpgpu,glreadpixels,Android,Opengl Es,Opengl Es 2.0,Gpgpu,Glreadpixels,从OpenGL上下文获取数据的最快方法是什么?目前,我正在渲染纹理,并使用glReadPixels()读回结果 在三星S3 Mini(I8190、Android 4.1.2、GPU Mali-400 MP、CPU Novator U8420 DualCore)上,640x480x4(resolutionxcolor)字节~1.3 MB的数据大约需要40毫秒。在LG G2(LG-D802、Android 4.2.2、GPU Adreno 330、CPU Snapdragon S4 Pro Quad
是否有另一种更快的方法将数据从GPU(OpenGL ES+供应商扩展)传输到CPU?glReadPixels是最快的方法。因为你不能直接访问gpu内存。只有开源驱动程序有它。我刚在谷歌上搜索了OpenGL ES 3.0,其中包括“glMapBufferRange()”。我将对映射/取消映射缓冲区有更深入的了解。是的,对于gl es 3.0更好地使用GLMAPBUFFERRANGE我不是唯一的一个,这里有一个简短的讨论: