マルチモニタ処理

マルチモニタ処理

フルスクリーン処理でデバイスのリセット (IDirect3DDevice9::Reset) または作成 (IDirect3D9::CreateDevice) が正常に行われると、そのデバイスを作成した Microsoft® Direct3D® オブジェクトがシステム上のすべてのアダプタを所有しているものとしてマークされる。この状態は排他モードと呼ばれ、Direct3D オブジェクトは排他モードを所有している。排他モードでは、他の Direct3D オブジェクトによって作成されたデバイスがフルスクリーン処理を行ったりビデオ メモリを割り当てることはできない。また、ある Direct3D オブジェクトが排他モードであると見なされたとき、フルスクリーンになった以外の他のデバイスは消失状態になる。詳細については、「デバイスの消失」を参照すること。

排他モードでは、Direct3D オブジェクトに、デバイスが使用するフォーカス ウィンドウが知らされる。その Direct3D オブジェクットが所有する最後のフルスクリーン デバイスがウィンドウ モードにリセットされるか破棄されると、排他モードは解放される。

Direct3D オブジェクトが排他モードを所有するとき、デバイスは 2 つのカテゴリに分類される。最初のカテゴリのデバイスには、以下の特性がある。

  • フルスクリーンのデバイスを作成した同じ Direct3D オブジェクトによって作成されている。
  • フルスクリーンのデバイスと同じフォーカス ウィンドウを持つ。
  • どのフルスクリーン デバイスとも異なるアダプタを表す。

このカテゴリのデバイスにはリセット処理や作成処理に関する制限はなく、消失状態にならない。このカテゴリのデバイスは、フルスクリーン モードにすることもできる。

最初のカテゴリに入らないデバイス (別の Direct3D オブジェクトによって作成され、別のフォーカス ウィンドウで作成され、既にフルスクリーンのデバイスがあるアダプタに作成されたデバイス) は、リセットできず、排他モードがなくなるまで消失状態から解放されない。結果として、マルチモニタ アプリケーションでは複数のデバイスをフルスクリーン モードにすることができるが、それは、これらのデバイスがすべて異なるアダプタのデバイスであり、同じ Direct3D オブジェクトによって作成され、しかも同じフォーカス ウィンドウを共有する場合に限られる。