OpenGLES2.0のフレームバッファからピクセルデータを読み取る必要があります。これはglReadPixelsで簡単に実行できることは知っていますが、iOS 5以降では、TextureCachedオブジェクトを使用してより高速に読み取ることができます。
私はBradLarsonによって提案されたソリューションを実装しました(私はいつも彼に感謝します、彼は多くの知識を共有するコミュニティのために素晴らしい仕事をしていると思います...)iPhone OpenGLES2.0のglReadPixelsのより速い代替手段
すべてが機能しているようです。適切なデータを取得し、glReadPixelsと比較すると、データは同じです。私の問題は、この2つの可能なソリューションのパフォーマンスを測定したときに発生しました(データの取得にかかる時間)。
ここに私の結果:
(フレームバッファとテクスチャサイズ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
これは意味がありますか?それとも、常により良い結果が得られると期待すべきですか?