0

ブルーム サンプルから 2 つのブルーム クラスをプロジェクトに配置し、サンプルと同じ手順に従いましたが、プロジェクトを開始すると、空白の紫色の画面しか表示されません。

エラーなどは発生しません。サンプルから 2 つのブルーム クラスを文字通りインクルードし、それをコンポーネントとして追加し、サンプルのようにメインの描画関数に begin 描画呼び出しを配置し​​ただけです。プロジェクトに他のレンダー ターゲットがありますが、それらがすぐに使用されるとは限りません。ブルームのものを取り出せば、すべてが通常どおりです。begindraw() 関数を呼び出すとすぐに、悪名高い空白の紫色の画面が表示されます...

なぜ私がこれを取得しているのか誰にも分かりますか?

  • ジェイミー。
4

1 に答える 1

1

この種の問題を診断する最良の方法は、(DirectX SDKで)PIXを使用することです。

紫色は、レンダリングターゲットのコンテンツがフレームワークによってクリアされたことを示します。このブログ投稿では、その理由を説明し、いくつかの解決策を提供しています。

簡単に言うと、バックバッファーにデータを描画し、レンダリングターゲットに切り替えてから、再度バックバッファーに切り替えて、描画されたものがまだそこにあることを期待することはできません。少なくともXBox360ではそうではありません-そしてXNAフレームワークのPCバージョンはこの振る舞いをエミュレートします。

バックバッファに切り替えて無傷にしたい場合は、その説明のようにRenderTargetUsage、バックバッファ(またはレンダリング方法によってはレンダリングターゲット)の設定をに変更できます。PreserveContentsブログ投稿。Xbox 360では、これはパフォーマンスに大きな打撃を与えることに注意してください

おそらくより良く、より互換性のある方法は、描画の順序を調整して、サーフェスに「戻る」必要がないようにすることです。

同様の最近の質問/回答へのリンク。)

于 2011-02-23T13:45:52.523 に答える