FBOに描画するときにデフォルトの深度バッファーを使用できますか?


6

デフォルトの深度バッファーをFBOに接続する方法は?FBOにアタッチされた深度レンダーバッファーバッファーを(描画後に)デフォルトの深度バッファーとして使用する方法

基本的に、FBOレンダリングとバックバッファーレンダリングの両方に同じ深度バッファーを使用したいと思います。

回答:


4

できません。

これは仕様によるものです。OpenGL(および以前のバージョンのDirectX)は、ウィンドウアプリが文字通り同じフレームバッファーを共有していた時代に設計されました。つまり、2つのウィンドウが重なっている場合、ウィンドウは、色、深度、およびステンシルバッファーからのまったく同じピクセルを使用しようとすることになります。ウィンドウシステムは、ハードコードされたマスキング操作を介してこれに対処しました。

つまり、デフォルトの深度バッファを所有しておらず、デフォルトの深度バッファを変更できず、OpenGL APIのデフォルトの深度バッファから確実に読み取ることができません。

最善の策は、すべてのレンダリングをFBOで実行し、テクスチャブリットを使用して最終的な画像をデフォルトのFBOに取り込むことです。


信頼できるとはどういう意味ですか?実際には、glReadPixels(formatをGL_DEPTH_COMPONENTに設定)とglDrawPixels(formatをGL_DEPTH_COMPONTENTに設定し、その前にglColorMask(GL_FALSE、GL_FALSE、GL_FALSE、GL_FALSE)を呼び出して、変更しないことを示すことで、デフォルトの深度バッファーの読み取りと書き込みの両方を行うことができます。カラーバッファ)。ただし、これが最も効率的で最新の方法ではない場合があります。
JBeurer 2012年

共有の所有権とマスキングにより、デフォルトのフレームバッファのすべてが有効なデータを持っているとは限りません。すべてのモデム合成デスクトップで動作しますが、GL APIはそれを必要とせず、期待もしていません。
Sean Middleditch 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.