Direct3D 裝置 (Direct3D 9)

Direct3D 裝置是 Direct3D 的轉譯元件。 它會封裝並儲存轉譯狀態。 此外,Direct3D 裝置會執行轉換和光源作業,並將影像點陣化至表面。

架構上來說,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是有效的。

快速入門