0

D3Dアプリケーションが同時に実行されているときに、WPFアプリケーションが非常に低いフレームレートで実行されるという問題が発生しています。

状況は次のとおりです。最初のアプリケーションは、SlimDXとD3D10を使用して3DグラフィックスをレンダリングするWinformsフォームです。アプリケーションはフルスクリーンモードではなく、最大化されたウィンドウで実行されます。これは非常にスムーズで高速です。

2番目のアプリケーションは、いくつかの画像をレンダリングするWPFウィンドウで構成されてScatterViewいます。WPFウィンドウは透明です(AllowsTransparency="True"背景は透明です)。ここでの一般的な考え方は、WPFウィンドウは3Dシーンの上に合成されているように見える必要があるということです。

ただし、D3D10アプリケーションが実行されるとすぐに、WPFアプリのパフォーマンスは1〜2 fpsまで低下します(WPFパフォーマンスツールで測定)。これは、私のコンピューターハードウェアが両方のアプリケーションをレンダリングできないためではありません。D3D10アプリは常に3Dシーンを非常にスムーズにレンダリングし、両方のアプリケーションを実行しているときにGPUとCPUの使用率が最大になりません。WPFアプリに高いプロセス優先度を与えても、レンダリングパフォーマンスは1〜2fpsのままです。

また、両方のアプリケーションを1つのプロセスに結合D3DImageし、共有D3D10サーフェス(D3D9Exデバイスを使用)を使用してにフィードすることも試みましたD3DImage。さらに、を使っInteropBitmapてフレームデータを書き込んでみました。これらのソリューションはすべて機能し、その上にいくつかのWPFコントロールを備えたD3D10シーンを生成しますが、WPFをスムーズに実行するものはありません。

2つの異なるアプリケーションプロセスを使用するというアイデアは、同じプロセスでD3D10レンダリングを行うことから生じる可能性のある最終的なパフォーマンスへの影響からWPFレンダリングスタックを切り離すという私の最終的なアイデアでした。

4

0 に答える 0