1

テクスチャ バッファ オブジェクト (ARB_texture_buffer_object) をフレーム バッファ (EXT_framebuffer_object) にアタッチして、テクスチャ バッファ オブジェクトに直接レンダリングできるようにする方法はありますか?

マルチサンプル フレームバッファ (カラー バッファ、深度バッファ、ステンシル バッファ) の正確なビット単位のコピーを作成し、このコピーを VRAM ではなくメイン メモリに常駐させるために、これが必要です。

更新: 問題は、マルチ サンプリングされたフレーム バッファーで glReadPixels を直接呼び出して、その内容をコピーできないことです。代わりに、マルチ サンプリングされたフレーム バッファーを中間フレーム バッファーにブリットし、その上で glReadPixels を呼び出す必要があります。このプロセス中に、複数のサンプルが平均化され、中間バッファーに書き込まれます。もちろん、このバッファを glWritePixels で復元すると、精度が低下します。

マルチ サンプル テクスチャをフレーム バッファ オブジェクトのバッキング ストレージとして使用できることはわかっていますが、このテクスチャは VRAM に常駐し、同じ精度の損失なしにメイン メモリにコピーする方法はないようです。具体的には、カラー バッファーではなく、マルチ サンプリングされた深度バッファーのアタッチメントに関連する精度の低下が心配です。

OpenGL でマルチサンプリング フレーム バッファの正確なコピーを作成 (およびこのコピーを復元) する別の方法はありますか?

TL;DR: マルチ サンプル フレーム バッファー (具体的には深度バッファー) の正確な内容をメイン メモリにコピーし、精度を落とさずにそれらの内容を後で復元する方法。

4

1 に答える 1

4

OpenGL では、バッファ テクスチャをレンダー ターゲットとしてバインドできません。ただし、「マルチサンプル フレームバッファの正確なビット単位のコピー」を作成することを妨げているものはわかりません。バッファ テクスチャで解決できると思われる問題は何ですか?


マルチ サンプル フレーム バッファー (具体的には、深度バッファー) の正確な内容をメイン メモリにコピーし、後で精度を落とさずにそれらの内容を復元する方法。

いいえ。

また、後で保存して復元できるようにするために、イメージの内容をメイン メモリにコピーする必要はありません。マルチサンプル イメージの内容を保持する必要がある場合は、単純に別のマルチサンプル イメージにブリットします。ブリットバックして元に戻すことができます。または、使い終わるまで消去しないマルチサンプル テクスチャにレンダリングすることをお勧めします。そうすれば、コピーする必要はありません。

于 2011-09-21T03:21:28.830 に答える