次の方法で共有


複数のシステム モニターでの作業 (Direct3D 9)

排他的な全画面モードの概念は Direct3D 9 でも保持されていますが、IDirect3D9::CreateDevice および IDirect3DDevice9::Reset メソッドの呼び出しでは完全に非明示的に保持されます。全画面処理でデバイスのリセットまたは作成が正常に行われると、そのデバイスを作成した Direct3D オブジェクトがシステム上のすべてのアダプターを所有しているものとしてマークされます。この状態は排他モードと呼ばれ、この時点で Direct3D オブジェクトは排他モードを所有しています。排他的モードとは、他のいずれかの Direct3D 9 オブジェクトによって作成されたデバイスは全画面操作を実行することも、ビデオ メモリーを割り当てることもできないことを意味します。また、Direct3D9 オブジェクトが排他モードであると見なしたときには、全画面になったデバイス以外のデバイスはすべて喪失状態になります。消失したデバイスを処理する方法については、「喪失したデバイス (Direct3D 9)」を参照してください。

排他モードでは、その Direct3D9 オブジェクトに、デバイスが使用するフォーカス ウィンドウが通知されます。その Direct3D9 オブジェクトが所有する最後の全画面デバイスがウィンドウ表示モードにリセットされるか破壊されると、排他モードは解放されます。

Direct3D9 オブジェクトが排他モードを所有するとき、デバイスは 2 つのカテゴリに分類されます。最初のカテゴリのデバイスは、既に全画面であるデバイスを作成したものと同じ Direct3D9 オブジェクトによって作成され、既に全画面であるデバイスと同じフォーカス ウィンドウを持ち、他の全画面デバイスとは別のアダプターを表します。このカテゴリのデバイスは、制限なくリセットまたは作成でき、喪失状態になることはありません。このカテゴリのデバイスは、全画面モードにすることもできます。

このカテゴリに入らないデバイス (別の Direct3D9 オブジェクトによって作成されたか、別のフォーカス ウィンドウで作成されたか、既に全画面のデイバイスがあるアダプターに作成されたデバイス) はリセットできず、排他モードがなくなるまで喪失状態のままになります。

実際には、マルチモニター アプリケーションでは複数のデバイスを全画面モードにすることができますが、それは、これらのデバイスがすべて異なるアダプターのデバイスであり、同じ Direct3D9 オブジェクトによって作成され、しかも同じフォーカス ウィンドウを共有する場合に限られます。

同じ IDirect3D9 オブジェクトおよびフォーカス ウィンドウを使う新しいデバイスを作成すると、元のデバイスはサーフェスを失います。アプリケーションで最初のデバイスを使うには、そのデバイスに対する IDirect3DDevice9::Reset を呼び出す必要があります。たとえば、2 つのデバイスを作成するには、次の手順を実行します。

  1. デバイス 1 を作成します。
  2. デバイス 2 を作成します。
  3. デバイス 1 をリセットします。