2011-10-24 4 views
1

私はWPFアプリケーションでD3DImageをホストしているプロジェクトで作業しています。透明な背景を持つD3DImage上にレンダリングされる他のWPFコントロールがあります。しかし、私のシーンをレンダリングすると、UIが表示されるまでUIが消えてしまいます(おそらく再レンダリングが強制されます)。SlimDXを使用してDirect3DコンテンツをレンダリングするとWPF UIがレンダリングされない

これは問題ではないはずです。これは比較的最近この問題なしで達成しましたが、私はコードを比較できないため、そのプロジェクトはもうありません。もしこれが何であるかについて誰かが考えているなら、私はすべての耳です。私は明日の朝にこの問題を再現しようとする小さなテストプロジェクトを作ります。私はこの質問を更新します。

編集 私はhereをダウンロードすることができ、簡単なプロジェクトに抱えている問題を再現するために管理しています。注:プロジェクトを実行するには、最新のSlimDXがインストールされている必要があります。そのテストプロジェクトでD3DImage.AddDirtyRect(...)への呼び出しをコメントアウト

編集が は、UIが正しく描画されます。しかし、オブジェクトを回転させた後(回転が更新されたときに3Dコンテンツを再レンダリングする)、UIはちらつき、一貫して再描画されません。

答えて

0

私は問題の原因を発見しました。基本的にWPFでは、D3DImageをDirect3Dコンテンツのレンダリングサーフェスとして使用する場合、フロントバッファの提示を処理するため、Device.Present()メソッド呼び出しを使用することはできません。これは、D3DImageがこれを処理して適切な透明フィルムを適用できるようにする必要があります(詳細については、hereを参照してください)。簡単に言えば

、私の修正は二つの部分から成って:私はmDevice.SetRenderTarget(0, mSurface)を使用してデバイスにターゲットを渡す必要がSurface.CreateRenderTarget(...)を使用してレンダリングする表面を作成した後

  1. 。これにより、レンダリングがサーフェス上で行われるようになります。
  2. レンダリング操作中に、​​への呼び出しを削除して、WPFが正しいバッファレンダリングを処理できるようにしました。

説明は100%正確ではありませんが、そのリンクとD3DImageのMSDNドキュメントを読むと、それをクリアする必要があります。

関連する問題