2011-03-11 8 views
1

状況は次のとおりです。ある深度値を含むテクスチャがあります。私はそのテクスチャをデプスバッファーとして使用して幾何学的なレンダリングを行いたいのですが、ですが、通常のフレームバッファー(ウィンドウのフレームバッファー)に色を書きたいとします。通常のバックバッファ+ OpenGL(FBO)の深度テクスチャにレンダリング

どうすればよいですか?私はFBOを作成してみましたが、それに深度テクスチャをバインドするだけでしたが(GL_DEPTH_COMPONENT)、うまくいきませんでした。どの色も現れなかった。

答えて

2

できません。レンダリングするFBOは、メインフレームバッファまたはオフスクリーンのいずれかです。どのような方法でも混在させることはできません。

代わりに、カラーレンダーバッファーにレンダリングして、メインフレームバッファーに単純なブリッティング操作を行うことをお勧めします。

編集-1。

また、すでにメインFBに奥行きがある場合は、まず奥行きをブライトしてメインFBにレンダリングし、ビデオメモリを追加のカラーレンダバッファに保存することができます。

P.S.ブリッティングはglBlitFramebufferで行われます。動作させるには、GL_READ_FRAMEBUFFERGL_DRAW_FRAMEBUFFER、glDrawBuffer()をそれぞれ設定する必要があります。

+2

メイン/ウィンドウフレームバッファ内のレンダリングは、ウィンドウの可視部分、つまりウィンドウが遮蔽されている部分のみにマスクされ、メイン/ウィンドウフレームバッファに内容が書き込まれません。システムが合成デスクトップ(XComposite/Copmiz、Windows Vista/7 Aero)を使用している場合、ウィンドウの閉塞は起こりませんが、合成がないか、無効になっていると、このマスキングが発生します。 – datenwolf

+0

glBlitFramebufferのパフォーマンスはどうですか? –

+0

@Matt Fichman。それは良いことでなければならない。 – kvark

関連する問題