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

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

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

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

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

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

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

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

程式設計提示