Microsoft DirectX 8.0 (Visual Basic) |
排他的なフルスクリーン モードの概念が Microsoft® DirectX® 8.0 に保持されているが、Direct3D8.CreateDevice および Direct3DDevice8.Resetメソッドの呼び出しでは完全に非明示的に保持される。フルスクリーン処理でデバイスのリセットまたは作成が正常に行われると、そのデバイスを作成した Direct3D8 オブジェクトがシステム上のすべてのアダプタを所有しているものとしてマークされる。この状態は排他モードと呼ばれ、この時点で Direct3D8 オブジェクトは排他モードを所有している。排他モードでは、ほかの Direct3D8 オブジェクトによって作成されたデバイスがフルスクリーン処理を行ったりビデオ メモリを割り当てることはできない。また、Direct3D8 オブジェクトが排他モードであると見なしたときには、フルスクリーンになったデバイス以外のデバイスはすべて消失状態になる。消失したデバイスを処理する方法については、「消失したデバイス」を参照すること。
排他モードでは、その Direct3D8 オブジェクトに、デバイスが使用するフォーカス ウィンドウが通知される。その Direct3D8 オブジェクトが所有する最後のフルスクリーン デバイスがウィンドウ モードにリセットされるか破壊されると、排他モードは解放される。
Direct3D8 オブジェクトが排他モードを所有するとき、デバイスは 2 つのカテゴリに分類される。最初のカテゴリのデバイスは、既にフルスクリーンであるデバイスを作成したものと同じ Direct3D8 オブジェクトによって作成され、既にフルスクリーンであるデバイスと同じフォーカス ウィンドウを持ち、ほかのフルスクリーン デバイスとは別のアダプタを表す。このカテゴリのデバイスは、制限なく Reset または作成でき、消失状態になることはない。このカテゴリのデバイスは、フルスクリーン モードにすることもできる。
このカテゴリに入らないデバイス (別の Direct3D8 オブジェクトによって作成されたか、別のフォーカス ウィンドウで作成されたか、既にフルスクリーンのデイバイスがあるアダプタに作成されたデバイス) はリセットできず、排他モードがなくなるまで消失状態のままになる。
実際には、マルチモニタ アプリケーションでは複数のデバイスをフルスクリーン モードにすることができるが、それは、これらのデバイスがすべて異なるアダプタのデバイスであり、同じ Direct3D8 オブジェクトによって作成され、しかも同じフォーカス ウィンドウを共有する場合に限られる。