glReadPixels将数据从视频内存中的帧缓冲区读取到主内存。在PC端,性能受到PCI-E带宽的限制。但是,在某些移动平台上,主内存和显存共享相同的物理内存。这是不是意味着在移动平台上,从显存读取数据到主存的命令会更快?在移动平台上有这样的优化吗?
参考:https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glReadPixels.xhtml
发布于 2021-08-28 09:06:36
glReadPixels通常如此慢的主要原因是它引入了一个CPU/GPU同步点。在图形处理器完成渲染之前,glReadPixels函数通常不能在CPU上完成。无论内存架构如何,GPU流水线都非常深,因此等待时间可能会很长。
修复方法是使用对PBO的异步读取,如下所述:Android OpenGL ES 3.0 PBO instead of glReadPixels()。然而,速度的提高来自于删除CPU/GPU同步点,而不是与内存体系结构有太多关系。
https://stackoverflow.com/questions/68922585
复制相似问题