GetFrontBufferData メソッドを使用して .tga 画像を保存しようとしましたが、アルファ値が失われました。それらは完全に 1 つです。RenderTarget または BackBuffer から正しいアルファ値を取得できましたが、rgb 値は正しくありません。シーンが存在してもすぐに表示されます,backbuffer はまだ frontbuffer よりも暗いようです。
Q1: FrontBuffer
にはアルファ値がありますか?
Q2:透明なものをレンダリングしようとすると、バック バッファーとフロント バッファーのデータの違いは何ですか?
質問する
253 次
1 に答える
0
透明なオブジェクトをレンダリングすると、そのアルファ値を使用してアルファ ブレンディングが実行されます。ブレンディングが完了すると、新しい値がバック バッファーに書き込まれます。アルファ値を保持したい場合、バック バッファの形式はD3DFMT_A8R8G8B8
. の呼び出し中にアルファチャンネルをクリアすることについても覚えておく必要がありますIDirect3DDevice9::Clear()
。レンダリングが完了すると、バック バッファーとフロント バッファーのポインターは単純に反転されます (詳細を参照)。したがって、どちらのバッファも同じ形式になります (バック バッファを RGBA 形式で作成した場合、フロント バッファも RGBA になります)。ちなみに、フロントバッファを取得する代わりに、バックバッファを取得してロックすることもできます。
デフォルトでは、アルファ ブレンディングは R、G、B、および A チャンネルで同じ操作を実行しますが、アルファ チャンネルのみに別の操作を指定できます。これを参照してください。
于 2012-06-28T21:51:14.907 に答える