Eta*_*tan 5 glreadpixels core-video ios opengl-es-2.0
在iOS 5中,引入了OpenGL ES Texture缓存,以提供从摄像机视频数据到OpenGL的直接方式,而无需复制缓冲区.会话414中简要介绍了纹理缓存--Windows 2011中iOS 5的OpenGL ES的进展.
我发现了一篇有趣的文章,最后进一步滥用了这个概念,并glReadPixels通过简单地锁定纹理,然后直接访问缓冲区来绕过调用.
glReadPixels由于iPad 2中使用的基于图块的渲染器(即使只使用1x1纹理),因此速度非常慢.但是,所描述的方法似乎处理得比glReadPixels.
文章中提出的方法是否有效,是否可以用于提升依赖的应用程序glReadPixels?
由于OpenGL与CPU并行处理图形数据,因此在CVPixelBufferLockBaseAddress不与OpenGL交谈的情况下,如何在完成渲染时知道调用?
我根据您上面链接的文章和 WWDC 2011 中的 Apple ChromaKey 示例,在这个答案中描述了一种执行此操作的方法。鉴于 Apple 在他们的一个示例中使用了此方法,并且我没有从他们的 OpenGL 中听到任何反驳这一点的内容ES 工程师,我相信这是纹理缓存的有效使用。它适用于我尝试过的所有 iOS 5.x 兼容设备,也适用于 iOS 5.0 和 5.1。它比 快得多glReadPixels()。
至于何时锁定像素缓冲区基地址,您应该能够使用glFlush()或类似的方法进行阻塞,直到所有数据都渲染到您的 FBO 纹理。这似乎适用于我通过纹理支持的 FBO 完成的 30 FPS 1080p 电影编码。
| 归档时间: |
|
| 查看次数: |
5108 次 |
| 最近记录: |