次の方法で共有


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

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

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

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

このカテゴリに含まれていないデバイス。これは、別の Direct3D9 オブジェクトによって作成されたもの、または別のフォーカス ウィンドウで作成されたもの、または既に全画面表示のデバイスを持つアダプターでは、排他モードが失われるまでリセットできず、失われた状態を維持できません。

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

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

  1. デバイス 1 の作成
  2. デバイス 2 の作成
  3. デバイスのリセット 1

プログラミングのヒント