2

こんにちは私は、D3DImageと共有テクスチャを使用して、SlimDXとDirectX11グラフィックをWPFアプリケーションに統合することができました。ただし、単純なシーン(SlimDXサンプルのGameOfLifeなど)を高解像度(2560x1440)でレンダリングすると、パフォーマンスが大幅に低下します。

レンダリングメソッドのパフォーマンスプロファイリングを試してみましたが、バックバッファを無効にするときにほとんどの時間がD3DImageのロックに費やされているようです。

_d3dImage.Lock(); // <- this call takes 78,5 % of the time when rendering the frame
_d3dImage.AddDirtyRect(new Int32Rect(0, 0, _d3dImage.PixelWidth, _d3dImage.PixelHeight));
_d3dImage.Unlock();

描画後、デバイスのフラッシングに多くの時間が費やされます。

_device.ImmediateContext.Flush(); // <- 20,6% of the time when rendering the frame

誰もが問題とこれを最適化する方法を知っていますか?WPFとSlimDXを統合すると、降下パフォーマンスが期待できますか?

4

1 に答える 1

1

呼び出しのロックとフラッシュ(GPUがCPUと同期する必要があるポイント)でパフォーマンスの問題が発生しているので、プログラムはGPUに厳密にバインドされており、CPUはそれを待つためにストールし続ける必要があると思います追いつく。これは、計算シェーダーを無効にしたときのパフォーマンスの向上によっても生まれます。

その時点で何を言うべきかわかりませんが、その推測が正しければ、カードが負荷を処理できないように見える場合を除きます。

于 2012-03-29T21:25:16.130 に答える