移动平台上的glReadPixels等命令是否有特殊的优化?



glReadPixels从显存中的帧缓冲区读取数据到主存。在PC端,性能受到PCI-E带宽的限制。然而,在一些移动平台上,主内存和显存共享相同的物理内存。这是否意味着从显存读取数据到主存的命令在移动平台上更快?移动平台上是否存在这样的优化?

参考:https://www.khronos.org/registry/OpenGL-Refpages/es3.0/html/glReadPixels.xhtml

glReadPixels通常如此缓慢的主要原因是它引入了CPU/GPU同步点。在GPU完成渲染之前,glReadPixels函数通常无法在CPU上完成。无论内存架构如何,GPU管道都非常深,因此等待时间可能很长。

修复是使用异步读取PBO,这里讨论:Android OpenGL ES 3.0 PBO而不是glReadPixels()。然而,速度的提高来自于移除CPU/GPU同步点,而不是与内存架构有很大关系。

最新更新