1

私は OpenGL にかなり慣れていないので、シーン レンダリングに後処理ステージを追加する方法を見つけようとしています。私がこれまでに知っていることは、FBO を作成し、それにシーンをレンダリングした後、後処理シェーダーを使用して FBO からのテクスチャを入力としてバック バッファーにレンダリングできるということです。

しかし、これが私の知識を超えているのは、マルチサンプリングが投入されたときです。FBO はマルチサンプリングする必要があります。1. ポストプロセス シェーダーがサブサンプルを 1:1 で操作して、最終的なマルチサンプリングされた画面出力を生成するか、または 2. シェーダーが複数のサンプルを解決し、各画面ピクセルに対して 1 つの画面フラグメントを出力する必要があります。これらはどのように行うことができますか?

4

1 に答える 1

0

オプション 1 は、 GL_ARB_texture_multisample (GL 3.2 以降のコア)を介して取り込まれた機能を介して GL でサポートされています。sampler2DMS基本的に、これは新しいマルチサンプル テクスチャ タイプと、特定のサンプル インデックスから明示的にフェッチできる のような対応するサンプラーをもたらします。このアプローチを効率的に使用して後処理効果を実装できるかどうかはわかりません。

オプション2は、あなたが説明したものとは少し異なります。シェーダーがマルチサンプルの解決を行うわけではありません。マルチサンプル FBO にレンダリングし (そのためのテクスチャは必要ありません。レンダーバッファでも同様です)、 を使用して明示的に解決しglBlitFramebuffer、別の非マルチサンプル FBO (今回はテクスチャを使用) に変換できます。この非マルチサンプル テクスチャは、後処理の入力として使用できます。また、後処理もデフォルトのフレームバッファも、マルチサンプリングをまったく意識する必要はありません。

于 2015-04-02T15:11:05.170 に答える