使用多個監視器系統 (Direct3D 9)

獨佔全螢幕模式的概念會保留在 Direct3D 9 中,但完全隱含于 IDirect3D9::CreateDeviceIDirect3DDevice9::Reset 方法呼叫中。 每當裝置在全螢幕作業中成功重設或建立時,建立裝置的 Direct3D 物件都會標示為擁有該系統上的所有介面卡。 此狀態稱為獨佔模式,此時 Direct3D 物件擁有獨佔模式。 獨佔模式表示任何其他 Direct3D9 物件所建立的裝置都不能假設全螢幕作業,也無法配置視訊記憶體。 此外,當 Direct3D9 物件採用獨佔模式時,除了全螢幕裝置以外的所有裝置都會進入遺失狀態。 如需如何處理遺失裝置的資訊,請參閱 遺失裝置 (Direct3D 9)

除了獨佔模式之外,Direct3D9 物件也會通知裝置要使用的焦點視窗。 當 Direct3D9 物件擁有的最後一個全螢幕裝置重設為視窗模式或終結時,就會釋放獨佔模式。

當 Direct3D9 物件擁有獨佔模式時,裝置可以分成兩個類別。 第一個類別的裝置是由建立已全螢幕之裝置的相同 Direct3D9 物件所建立的裝置、具有與已全螢幕裝置相同的焦點視窗,以及代表與任何全螢幕裝置不同的介面卡。 此類別中的裝置對於重設或建立的能力沒有限制,也不會進入遺失狀態。 此類別中的裝置甚至可以進入全螢幕模式。

不在此類別中的裝置,可能是由不同 Direct3D9 物件或具有不同焦點視窗建立的裝置,或是某些具有全螢幕裝置的介面卡無法重設,且在獨佔模式遺失之前仍維持在遺失狀態。

實際的影響在於,多個監視器應用程式可以將數個裝置置於全螢幕模式,但只有在所有這些裝置都適用于不同的介面卡時,才由相同的 Direct3D9 物件所建立,而且全都共用相同的焦點視窗。

當您使用相同的 IDirect3D9 物件和焦點視窗建立新裝置時,您的原始裝置將會失去其表面。 您必須在第一個裝置上呼叫 IDirect3DDevice9::Reset ,您的應用程式才能使用它。 例如,若要建立兩個裝置,請執行下列動作:

  1. 建立裝置 1
  2. 建立裝置 2
  3. 重設裝置 1

程式設計提示