1

iOS では、OpenGL ES 2.0 レンダリングをテクスチャに設定し、それらのテクスチャを後処理パスに使用したり、後続のレンダリング パスのテクスチャとして使用したりするのは簡単です。これは、OpenGL 実装全体でかなり一般的なアプローチのようです。すべて良い。

Apple の iOS 用 OpenGL ES プログラミング ガイド (28 ページと 29 ページを参照) によると、複数のオフスクリーン フレームバッファ オブジェクトを作成して描画することもできます。彼らは、オフスクリーン画像処理を実行するためにこれを行うことを提案しています。ただし、レンダリング後に画像処理やその他の目的でバッファにアクセスする方法についての説明は見つかりません。

これらのオフスクリーン バッファは、画像処理用の非 OpenGL フレームワークで使用できますか? これらのバッファは CPU によって読み戻されますか?

誰にもポインタや例がありますか?

4

1 に答える 1

1

画像処理は、オフスクリーンフレームバッファオブジェクト(FBO)の1つの可能な使用法ですが、これには他のアプリケーションがあります。

画像処理の場合、通常、テクスチャに裏打ちされたFBOにレンダリングします。そのテクスチャにレンダリングしたら、それを画像処理パイプラインの第2ステージに取り込むか、3Dシーンの一部でテクスチャとして使用することができます。この例として、私のGPUImageオープンソースフレームワークは、着信画像またはビデオフレームに適用されるフィルターステージごとに、テクスチャで裏打ちされたオフスクリーンFBOを使用します。次のステージでは、そのテクスチャを取り込み、フィルタリングされた結果を独自のテクスチャに裏打ちされたFBOにレンダリングします。

私が言ったように、オフスクリーンレンダリングのための他のアプリケーションがあるかもしれません。これらには、遅延照明(Appleは2011 WWDC OpenGL ESビデオでかなり印象的な例を示しています)と、後で参照するためのキャッシュされたルックアップ値の計算が含まれていました。後者をMoleculesアプリケーションの最適化として使用して、原子球の表面のアンビエントオクルージョンライティングテクスチャのマッピングを高速化します。各アトムのフラグメントごとに一連の計算を実行するのではなく、一般的な球に対して1回レンダリングしてから、アトムフラグメントシェーダーで結果を検索します。

于 2012-10-01T15:06:44.013 に答える