【发布时间】:2012-03-04 21:50:03
【问题描述】:
在 iOS 5 中,OpenGL ES 纹理缓存被引入以提供从相机视频数据到 OpenGL 的直接方式,而无需复制缓冲区。 session 414 - Advances in OpenGL ES for iOS 5 of WWDC 2011里有关于纹理缓存的简单介绍。
我发现了一个有趣的article,它最终进一步滥用了这个概念,并通过简单地锁定纹理然后直接访问缓冲区来规避对glReadPixels 的调用。
glReadPixels 非常慢,因为 iPad 2 中使用了基于 tile 的渲染器(即使您只使用 1x1 纹理)。但是,所描述的方法似乎比glReadPixels 处理得更快。
文章中提出的方法是否有效,是否可以用于提升依赖glReadPixels的应用程序?
由于 OpenGL 与 CPU 并行处理图形数据,CVPixelBufferLockBaseAddress 调用如何在不与 OpenGL 对话的情况下知道渲染何时完成?
【问题讨论】:
标签: ios opengl-es-2.0 glreadpixels core-video