2

OpenGL マルチパス レンダリングの例があり、マルチサンプリングを追加する必要があります。

私は2つのアプローチを試みました。どちらのアプローチも、深度バッファーやステンシル バッファーを使用せず、レンダリング カラーのみを使用します。

プリンシパル レンダリング中のマルチサンプリング

1. Bind Multisampling Fbo
2. Render geometry 
3. Blit / resolve multisampling
4. [1..n] Bind normal Fbo and apply post-process

最後にマルチサンプリング

1. Bind normal Fbo
2. Render geometry
3. [1..n] Bind normal Fbo and apply post-process
4. Bind Multisample Fbo
5. Render result texture onto a quad into the multisample fbo
6. Blit / resolve multisampling

問題

どちらのアプローチも機能しているように見えますが (完全なフレームバッファーなど)、2 番目のアプローチではハード エッジがはっきりとわかります。最初のアプローチを使用するだけで、実際にはアンチエイリアス処理されたソフト エッジが得られます。

2 番目のアプローチに概念的な問題はありますか? 説明どおりに機能しないように、マルチサンプリングに特定の前提条件はありますか?

私は2番目のアプローチを使用することを大いに好みます。

4

1 に答える 1

3

2番目のアプローチは機能しません。マルチサンプリングでは、カバレッジ情報を使用して、ピクセルに属する各サンプルに異なる値を書き込みます。非マルチサンプル バッファにジオメトリを描画すると、この情報が失われます。非マルチサンプル バッファをマルチサンプル バッファにレンダリングしても、もはや存在しない情報を回復することはできません (エイリアシングは既に発生しています)。

于 2014-04-23T15:21:09.330 に答える