Share via


裝置類型

Direct3D 裝置類型包含硬體抽象層 (HAL) 裝置和軟體模擬轉譯器。

HAL 裝置

HAL 為主要裝置類型,可支援硬體加速點陣化,並處理軟硬體頂點。 如果應用程式所在的電腦配備了支援 Direct3D 的顯示卡,應用程式應可使用其進行 Direct3D 作業。 Direct3D HAL 裝置會實作硬體中的所有或部分轉換、光線和點陣化模組。

應用程式不會直接存取圖形卡。 它們可呼叫 Direct3D 函式和方法。 Direct3D 會透過 HAL 存取硬體。 如果執行應用程式的電腦支援 HAL,將可使用 HAL 裝置以享有最佳效能。

參考裝置

Direct3D 支援名為「參考裝置」或「軟體模擬轉譯器」的額外裝置類型。 不同於軟體裝置,軟體模擬轉譯器可支援 Direct3D 的每一項功能。 這個裝置只在用於偵錯用途,因此僅適用於已安裝 DirectX SDK 的電腦。 由於這些功能是專為精確度 (而非速度) 所實作,且會實作於軟體中,因此結果並不會太快。 軟體模擬轉譯器會盡可能使用特殊的 CPU 指示,但並非專為零售用應用程式所設計。 請僅將軟體模擬轉譯器運用在功能測試和示範等用途。

HAL 和 REF 裝置

HAL (硬體抽象層) 裝置和 REF (軟體模擬轉譯器) 裝置為 Direct3D 的兩大主要裝置類型;前者著重於硬體支援、非常快速,但可能無法支援所有項目;後者不會使用任何硬體加速,因此相當緩慢,但可保證以正確的方式支援所有 Direct3D 功能。 通常,您只需要使用 HAL 裝置,不過,如果您會使用一些圖形卡不支援的進階功能,就有可能需要使用 REF 裝置來進行作業。

另一個可能需要使用 REF 的時機,就是當 HAL 裝置產生不正常結果 (也就是您確定程式碼正確無誤,但結果不如預期) 時。 REF 裝置可保證一切正常運作,因此,建議您在 REF 裝置上測試應用程式,以了解不正常的行為是否仍舊存在。 如果該行為消失,即表示:(a) 應用程式假設圖形卡可支援實際上不受支援的部分內容,或 (b) 發生驅動程式錯誤。 如果應用程式仍無法搭配 REF 運作,就代表應用程式發生錯誤。

軟硬體頂點處理

軟硬體頂點處理僅適用於 HAL 裝置。 在管線中推送頂點時,頂點需要進行轉換 (透過世界、檢視和投影矩陣輪流轉換) 和照明 (透過 D3D 的內建照明功能),這個處理階段就是所謂的 T&L (「轉換 & 照明」的縮寫)。 硬體頂點處理意味著只要硬體可支援,處理作業就會透過硬體完成;而軟體頂點處理則會在軟體中進行。 一般的實務做法,是先嘗試建立 T&L 裝置,如果該作業失敗,再嘗試建立混合式裝置,如果這樣還是失敗,則嘗試軟體做法 (如果軟體失敗,請放季嘗試、輸出錯誤並結束)。

裝置