OpenGL ES - glReadPixels与TextureCached

时间:2012-10-09 14:12:21

标签: iphone opengl-es render-to-texture glreadpixels cctexturecache

我需要从OpenGL ES 2.0中的帧缓冲区读取像素数据。我知道可以使用glReadPixels轻松完成,但是从iOS 5开始,我们可以使用TextureCached对象来更快地阅读。

我已经实施了Brad Larson提出的解决方案(我将永远感谢他,我认为他在共享这么多知识的社区中做得很好......)Faster alternative to glReadPixels in iPhone OpenGL ES 2.0

一切似乎都有效,我得到了正确的数据,如果我将它与glReadPixels比较,数据是相同的。 当我测量这两种可能的解决方案的性能时(检索数据时消耗的时间),我的问题出现了。

这是我的结果:

(帧缓冲和纹理大小 320x480 像素)

GPUImageProcessingDemo [1252:707] glReadPixels 2750 us

GPUImageProcessingDemo [1252:707]纹理读取1276 us

GPUImageProcessingDemo [1252:707] glReadPixels 2443 us

GPUImageProcessingDemo [1252:707]纹理读取1263 us

GPUImageProcessingDemo [1252:707] glReadPixels 2494 us

GPUImageProcessingDemo [1252:707]纹理读取1375 us

这看起来非常有趣,因为它几乎是使用glReadPixels所需时间的一半。 问题是当我将纹理大小更改为更大的东西时,我得到了这样的结果:

(帧缓冲和纹理大小 480x620 像素)

GPUImageProcessingDemo [1077:707] glReadPixels 2407 us

GPUImageProcessingDemo [1077:707]纹理读取2842 us

GPUImageProcessingDemo [1077:707] glReadPixels 2392 us

GPUImageProcessingDemo [1077:707]纹理读取3040 us

GPUImageProcessingDemo [1077:707] glReadPixels 2224 us

这有意义吗?或者我应该期望总能得到更好的结果?

0 个答案:

没有答案