テクスチャバッファオブジェクト(ARB_texture_buffer_object)をフレームバッファ(EXT_framebuffer_object)に添付して、テクスチャバッファオブジェクトに直接レンダリングできる方法はありますか?テクスチャバッファオブジェクトをフレームバッファメモリとして使用する
マルチサンプルフレームバッファ(カラーバッファ、デプスバッファ、ステンシルバッファ)の正確なビット単位のコピーを作成し、このコピーをVRAMではなくメインメモリに置く必要があります。
UPDATE: 問題は、私が直接その内容をコピーするには、マルチサンプリングされたフレームバッファ上のglReadPixelsを呼び出すことができないということです。代わりに、私は中間フレームバッファにマルチサンプリングされたフレームバッファをblitし、その上でglReadPixelsを呼び出さなければなりません。このプロセス中、複数のサンプルが平均化され、中間バッファに書き込まれます。 glWritePixelsでこのバッファを復元すると、もちろん精度の低下があります。
私は、フレームバッファオブジェクトのバッキングストレージとしてマルチサンプルテクスチャを使用できますが、このテクスチャはVRAMに存在し、精度を損なうことなくメインメモリにコピーする方法がないようです。具体的には、カラーバッファではなく、マルチサンプリングされたデプスバッファアタッチメントに関連する精度の低下が心配です。
OpenGLでマルチサンプリングされたフレームバッファを正確にコピーする(そしてこのコピーを復元する)方法はありますか?
TL; DR:マルチサンプルフレームバッファ(具体的にはデプスバッファ)の正確な内容をメインメモリにコピーし、精度を損なうことなくそれらの内容を後で復元する方法。
テクスチャをレンダリングすることができない場合は、「ポータル」がCrystal Spaceでどのように実装されているか考えてください。 http://www.crystalspace3d.org/docs/online/1.4/manual/Portal-Engine.html(私はすべてのグラフィックエンジンにその共通の機能があるかどうかわかりません)。ありがとう – Simon
サイモン、あなたは確かにテクスチャオブジェクトにレンダリングすることができます。私の質問は、テクスチャBUFFERオブジェクト(ARB_texture_buffer_objectを参照)に固有です。 – FlorianZ
私はそれを逃した、精度のおかげで! – Simon