Direct3D 裝置是 Direct3D 的轉譯元件。 它會封裝並儲存轉譯狀態。 此外,Direct3D 裝置會執行轉換和光源作業,並將影像點陣化至表面。
- XPDM 與 WDDM
- 裝置類型 (Direct3D 9)
- 建立裝置 (Direct3D 9)
- 視窗模式與 Full-Screen 模式 (Direct3D 9)
- 選取裝置 (Direct3D 9)
- 遺失裝置 (Direct3D 9)
- 判斷硬體支援 (Direct3D 9)
- 處理頂點數據 (Direct3D 9)
- 基本類型
在架構上,Direct3D 裝置包含轉換模組、光源模組和點陣化模組,如下圖所示。
direct3d 裝置架構
Direct3D 目前支援兩種主要類型的 Direct3D 裝置:
- 具有硬體加速點陣化的 hal 裝置,以及硬體與軟體頂點處理的底紋
- 參考裝置
您可以將這些裝置視為兩個不同的驅動程式。 軟體和參考裝置會以軟體驅動程式表示,而 hal 裝置則以硬體驅動程式表示。 利用這些裝置最常見的方式是使用 hal 裝置來運送應用程式,以及功能測試的參考裝置。 這些是由第三方提供來模擬特定裝置 ,例如尚未發行的開發硬體。
應用程式所建立的 Direct3D 裝置必須對應至應用程式執行所在的硬體功能。 Direct3D 提供轉譯功能,方法是存取計算機上安裝的 3D 硬體,或模擬軟體中的 3D 硬體功能。 因此,Direct3D 會為硬體存取和軟體模擬提供裝置。
硬體加速裝置可提供比軟體裝置更好的效能。 所有 Direct3D 支援的圖形適配卡都可以使用 hal 裝置類型。 在大部分情況下,應用程式會以硬體加速和依賴軟體仿真的計算機為目標,以容納低階計算機。
除了參考裝置之外,軟體裝置不一定會支援與硬體裝置相同的功能。 應用程式應該一律查詢裝置功能,以判斷支援哪些功能。
由於 Direct3D 9 所提供的軟體和參考裝置的行為與 hal 裝置的行為相同,因此撰寫以使用 hal 裝置的應用程式程式代碼會與軟體或參考裝置搭配使用,而不需要修改。 請注意,雖然所提供的軟體或參考裝置行為與 hal 裝置的行為相同,但裝置功能會有所不同,而特定軟體裝置可能會實作較小的一組功能。
行為
Direct3D 可讓您指定裝置的行為,以及裝置的類型。 IDirect3D9::CreateDevice 方法可讓您組合一或多個行為旗標來控制 Direct3D 裝置的全域行為。 這些行為會指定要在 Direct3D 運行時間部分中維護的內容,而裝置類型會指定要使用的驅動程式。 雖然某些裝置行為的組合無效,但可以搭配所有裝置類型使用所有裝置行為。 例如,在以 D3DCREATE_PUREDEVICE 建立的裝置上指定D3DDEVTYPE_SW是有效的。
相關主題