0

フルスクリーン モードで Direct3D 9 デバイスを作成し、プレゼンテーションを開始するアプリケーションがあります。後で、最初のデバイスを作成した後、新しい Direct3D デバイスを一時的にウィンドウ モード (同じスレッド上で別のウィンドウ用) で作成します。このデバイスをすぐにもう一度破棄しましたが、どういうわけか、Alt キーを押しながらフルスクリーン アプリケーションから抜け出すことができなくなりました。アプリケーションに焦点が合っていないように見えますが、アプリケーションはバックグラウンドに落ちるのではなく、一番上にとどまります。

一時デバイスを D3DDEVTYPE_NULLREF として作成すると、Alt-Tab で突然アウトできるようになります。その理由を知っている人はいますか?もしそうなら、既存のデバイスを台無しにせずに2番目の一時的なデバイスを作成するにはどうすればよいですか?

4

2 に答える 2

0

2 番目のデバイスを作成した後で、最初のデバイスをリセットしてみてください。MSDN は、これが複数のデバイスを初期化する適切な方法であると述べました。しかし、私はそれについての記事を見つけることができません:(

フルスクリーンのウィンドウ付きデバイスを作成する必要はありませんでしたが。フルスクリーンのデバイスを 2 つしか試したことがありません。

于 2013-02-21T15:40:50.687 に答える
0

D3D デバイスを作成するときは、それをバインドするウィンドウを指定します ( CreateDevicecall の 3 番目のパラメーター)。2 番目のデバイスを破壊すると、最初のデバイスには見えない方法でフォーカスが失われることをお勧めします。明示的にフォーカスをメイン ウィンドウに戻してみてください。

second_device->Release();
SetActiveWindow(hWnd);

ところで、これが並列レンダリングを行う方法である場合は、代わりにレンダー ターゲットまたはスワップ チェーンの使用を検討してください。DX9 のドキュメントによると、デバイスを切り替えるとパフォーマンスが大幅に低下します。

于 2012-01-24T02:48:13.933 に答える