裝置類型 (Direct3D 9)

HAL 裝置

主要裝置類型是 hal 裝置,可支援硬體加速點陣化,以及硬體和軟體頂點處理。 如果應用程式執行所在的計算機配備支援 Direct3D 的顯示適配卡,您的應用程式應該將其用於 Direct3D 作業。 Direct3D hal 裝置會在硬體中實作轉換、光源和點陣化模組的所有或部分。

應用程式不會直接存取圖形適配卡。 它們會呼叫 Direct3D 函式和方法。 Direct3D 會透過 hal 存取硬體。 如果應用程式執行所在的計算機支援 hal,則會使用 hal 裝置來獲得最佳效能。

若要建立 hal 裝置,請使用 D3DDEVTYPE_HAL 作為裝置類型來呼叫 CreateDevice

參考裝置

Direct3D 支援稱為參考裝置或參考轉譯器的其他裝置類型。 與軟體裝置不同,參考轉譯器支援每個 Direct3D 功能。 此裝置僅供偵錯之用,因此僅適用於已安裝 DirectX SDK 的機器。 由於這些功能是針對精確度實作而非速度,而且會在軟體中實作,因此結果並不快。 參考轉譯器會盡可能使用特殊的 CPU 指示,但不適用於零售應用程式。 僅針對功能測試或示範目的使用參考轉譯器。 若要建立參考裝置,請使用 D3DDEVTYPE_REF 作為裝置類型呼叫 CreateDevice 方法。

HAL 與 REF 裝置

HAL (硬件抽象層) 裝置和 REF (REFerence 轉譯器) 裝置是 Direct3D 裝置的兩個主要類型:第一個是以硬體支援為基礎,而且速度很快,但可能不支援所有專案:雖然第二個使用沒有硬體加速,所以速度非常慢,但保證會以正確的方式支援整個 Direct3D 功能集。 一般而言,您只需要使用 HAL 裝置,但如果您使用圖形卡不支援的一些進階功能,您可能需要回復 REF。

您可能想要使用 REF 的另一次是,如果 HAL 裝置產生奇怪的結果 ,也就是說,您確定您的程式代碼正確,但結果不是您預期的結果。 REF 裝置保證能正確運作,因此您可能想要在 REF 裝置上測試您的應用程式,並查看奇怪的行為是否繼續。 如果沒有,這表示您的應用程式假設圖形卡支援它不支援的內容,或 (b) 它是驅動程式 Bug。 如果它仍然無法與 REF 裝置搭配運作,則它是應用程式錯誤。

硬體與軟體頂點處理

硬體與軟體頂點處理僅適用於 HAL 裝置。 當您將頂點推送至管線時,它們必須經過轉換(由世界、檢視和投影矩陣輪流)和點亮(由 D3D 的內建光源)-此處理階段稱為 T&L(用於轉換和照明)。 硬體頂點處理表示,如果硬體支援,則會在硬體中完成此動作;ergo,軟體頂點處理已完成軟體。 一般做法是先嘗試建立硬體 T&L 裝置,如果失敗,請嘗試混合,如果失敗,請嘗試軟體。 (如果軟體失敗,請放棄並結束並出現錯誤)。

Direct3D 裝置