2011-07-06 10 views
1

さまざまなタイプの情報を表示するための複数の「パネル」からなるC++ DirectX 10アプリケーションを開始する準備をしています。 1つのRenderTargetViewで複数のビューポートを試してみました。しかし、一度に1つのビューポートをクリアする方法については、明確な答えは見つかりません。私のアプリケーションのこれらのパネル(ビューポート)は、いくつかの領域で重複するので、下から上への描画は、上から見えないように、それぞれのビューポートをクリアするように、下から上に描画したいと考えています。高いもの。 DirectX 9では、現在設定されているビューポートだけをクリアするClear()メソッドがデバイスオブジェクトにあるようです。 DirectX 10は描画領域全体をクリアするClearRenderTargetView()を使用しており、DirectX 9のやり方と同等のオプションは見つかりません。DirectX 10の単一ビューポートをクリアする

描画領域内のビューポート/矩形のみをクリアする方法はありますか?ある人は、そのスペースにクワッドを描く唯一の方法があると推測しました。別の可能性は、各パネルに別々のRenderTargetViewを持たせることですが、別の深さ/ステンシルバッファなどの余分なリソースを必要とするので、避けたいと思います(それが私の誤解でない限り)。

ご協力いただきますようお願い申し上げます。ありがとう!

答えて

1

「ビューポート」ごとに1つのレンダリングターゲットを使用し、最後のビューではクワッドを使用してそれらを一緒に合成することをお勧めします。私はDX 10ではっきりとはさむ方法がないことを知っています。

また、記事hereによると、「レンダーターゲットビューの配列はID3D10Device :: OMSetRenderTargetsに渡すことができますが、それらのレンダーターゲットビュー単一の深度のステンシルビューに対応します。

これが役に立ちます。

+0

はい、役立ちます。私は、複数のレンダリングターゲットビューを使用していくつかの読書を行います。レンダリングターゲットビューを使用してウィンドウの異なる領域に描画することができれば、ターゲットビューとビューポートの両方がレンダリングされるのはなぜか分かりません。 –

+0

"すべてのレンダリングターゲットは、すべての寸法(幅と高さ、3Dの場合は深さ、*配列タイプの場合は配列サイズ)で同じサイズでなければなりません。 –

+0

これはあなたがリンクした同じ記事のものです。だから私はこれが私の望むものだとは思わない、私のユーザーインターフェースのパネルはサイズが違うだろうから。 –

0

適切なブレンドステート設定と四角いメッシュ(または他のシェイプのメッシュ)と一緒にシェーダーを作成し、それを使って消去したい領域をクリアすることはできますか?私はこれを試していないが、それができると思う。

関連する問題