1

DirectXを使用してアンマネージコードで画像をレンダリングし、WPFでD3DImageを使用してサーフェスをホストしています。システムがスリープ状態になると、frontBufferLostイベントが発生します。イベントが処理され、すべてのリソースが破棄されて再作成されます。

アンマネージコードでDirect3D9を使用している間は、すべてが正しく機能します。イベントが発生すると、デバイスが再作成され、エラーなしでレンダリングが実行されます。

しかし、エンジンでDirectX10を使用する場合、Surfaceキューの目的でDirect3D9デバイスも必要になるため、10個と9個のデバイスの両方を削除して再作成しようとします。この段階で、GetDeviceCapsの呼び出し中に、常に0x8876086aを取得します。これは、デバイスが使用できないと思います。

誰かがこの問題で私を助けることができますか?

4

1 に答える 1

1

通常、この種の問題を解決する最善の方法は、DirectX プロパティ コントロール パネルに移動し、DirectX のデバッグ バージョンに切り替え、デバッグ出力レベルを完全に上げてから、アプリを起動することです。GetDeviceCaps() の呼び出しが失敗したときに Visual Studio で出力ウィンドウを監視すると、問題が発生することが期待できます。

幸運を!

于 2011-08-30T23:54:28.857 に答える