2011-01-24 8 views
6

私はレンダリングコードの大部分をリファクタリングすることを考えています。 フレームバッファオブジェクト内の複数のカラーアタッチメントを使用して、画面とテクスチャの両方にレンダリングすることは可能ですか?これが可能でなければならないか、多くの有用なアプリケーションがあるにしても、私は情報を見つけることができません。私はそれが色のattachment0と添付ファイル1にレンダバッファ0として私のテクスチャをバインドするのに十分であるはずだと思いますか?デフォルトのレンダバッファをFBOに取り付けることはできますか?

たとえば、3Dモデルで「描画」できる対話型アプリケーションを作成したいとします。私は、UV座標をテクスチャにレンダリングすることでユーザーが描く場所を解決します。そのため、テクスチャを変更する場所をマウスの座標で調べることができます。私の場合、テクスチャにUVを描画し、スクリーンに実際のテクスチャを1回で描画するシェーダを使用するのが最も速いでしょう。

これを行うには良い方法はありますか、それとも私は適切なトラックにいますか?

答えて

6

OpenGLでは「デフォルトのレンダリングバッファ」はありません。ウィンドウシステムにはデフォルトのフレームバッファが予約されていますが、基本的には「FBOが有効になっていません」という意味です。ですから、残念なことに通常のOpenGLでは、カラーバッファを他のFBOにカラーアタッチメントとして使用する方法はありません。私はこの機能を提供する可能性のある拡張機能を認識していません。

レンダリングバッファには、予約名ゼロもありますが、特殊な "none"変数であり、レンダリングバッファのバインドを解除することができます。

+3

確かに。 glspecのセクション4.4では、「最初に、GLはデフォルトのフレームバッファを使用します。このフレームバッファに添付されたイメージの格納、寸法、割り当て、フォーマットは、ウィンドウシステムによって完全に管理されます。したがって、デフォルトのフレームバッファ、その画像も含めてGLで変更することはできませんし、GLによってデフォルトのフレームバッファを削除することもできません。 –

+0

だから、独自のレンダバッファをデフォルトのフレームバッファに追加することさえできません。あなたの問題を解決するために、ユースケースに応じて、ウィンドウ座標をオブジェクト座標に変換するルックアップ "gluUnProject"を試すことができます –

+0

答えをありがとう。私は、デフォルトのフレームバッファと存在しない "デフォルトのレンダバッファ"について混乱していると思います。 – Andos

関連する問題