Contents

DirectX 11 與 DirectX 12:有什麼區別以及您應該使用哪一個?

DirectX 12 與 Windows 10 一起發布,微軟的 DirectX 12 為遊戲玩家和遊戲開發人員開創了一個新時代。 DirectX 12 能夠降低 CPU 開銷,同時提升 GPU 效能,很快就聲名鵲起。

事實上,人們可能想知道增強效能是否可以像從 DirectX 11 遷移到其後繼產品 DirectX 12 一樣簡單。為了更清楚地了解這一轉變,明智的做法是檢查這兩個 DirectX 迭代之間存在的差異。

什麼是微軟的 DirectX?

/bc/images/untitled-design-1.jpg

總而言之,Microsoft DirectX 構成了一組軟體開發工具,可促進應用程式內各種多媒體操作的執行,特別是跨 Windows 和 Xbox 系統部署的遊戲程式。舉例來說,暫時深入研究應用程式介面或 API 的概念可能會有所幫助,它們本質上是一系列協議,可以實現作業系統不同元件之間的順暢通信,從而簡化程式設計互動。

應用程式介面 (API) 透過以結構化格式交換資料來促進多個軟體應用程式之間的通訊。本質上,API 充當中介,允許不同的系統無縫互動。我們在對 API 的全面檢查中進一步探討了這個概念,其中我們深入研究了它們在不同行業中的各種功能和利用率。簡單來說,想像一下使用電話發送和接收訊息;同樣,API 可以將資訊從一個程序傳輸到另一個程序,使用戶能夠有效地存取和處理資料。

DirectX 11 和 DirectX 12 之間有什麼不同?

DirectX 11 和 DirectX 12 代表了 Microsoft 遊戲開發圖形 API 演進過程中的不同迭代。主要區別在於它們與電腦硬體架構的交互作用。雖然使用DirectX 11 開發的遊戲通常僅利用兩到四個CPU 核心,其中一個核心充當CPU 和GPU 之間的通訊點,但DirectX 12 引入了增強的多執行緒功能,可以在多個核心之間實現更高效率的資源分配。這會提高利用此更新的圖形介面的應用程式的效能和更流暢的渲染。

為了優化遊戲應用程式的效能,軟體有效地分配資源非常重要。這意味著充分利用所有可用的處理單元的潛力,同時保持它們之間的高效通訊。在這方面,某些作業系統已經實現了允許在不同硬體組件(例如處理器和顯示卡)之間分配計算任務的機制。透過利用多核心的功能,這些策略可增強整體系統效能並促進中央處理單元 (CPU) 和圖形處理單元 (GPU) 之間的無縫互動。

事實上,DirectX 12 值得注意的功能之一是它結合了非同步計算和管道狀態物件(PSO) 等高級功能,這些功能透過支援多個任務的並發執行來顯著提高圖形處理單元(GPU) 的效率。因此,該技術可以最佳地利用 GPU 的功能,從而實現其最大的效能潛力。

除了渲染圖形內容之外,圖形處理單元 (GPU) 還能夠處理各種任務,包括執行機器學習演算法。然而,對於 DirectX 11,GPU 僅限於在任何給定時刻並按預定順序執行其中一項任務。此限制會導致 GPU 資源的利用率不理想,進而對整體效能產生負面影響。

考慮一下餐廳服務生的比喻。在等待客人點菜時,服務生先詢問顧客喜歡的酒。服務生接過飲料後,就開始詢問主菜。儘管這種循序漸進的過程很有效,但由於其順序性質,缺乏最佳效率。

在電腦科學領域,不同的圖形處理單元(GPU)資產可以管理餐廳顧客的個人訂單。在等待用餐時,這些專用於點餐流程的 GPU 資源一直處於閒置狀態,直到需要處理顧客的主菜請求為止。透過利用 DirectX 12 非同步運算架構的功能,服務生可以同時有效率地收集所有訂單,就像流行速食店提供的便利服務一樣。這種方法優化了 GPU 資源的利用率,並增強了遊戲時體驗的整體效能。

DirectX 12 引入了管道狀態物件 (PSO),使開發人員可以更好地控制其圖形處理能力。在先前的版本(例如 DirectX 11)中,硬體僅負責透過圖形管道解釋和渲染圖形數據,該管道由一系列導致幀渲染的輸入和輸出組成。雖然圖形管道為高效渲染提供了基礎,但它也並非沒有缺陷。

目前的配置包括一系列不同的狀態,例如光柵化狀態、混合狀態和深度模板狀態,以及其他幾個狀態。在 DirectX 11 中,這些不同的狀態之間存在相互依賴性,導致它們依次依賴彼此的完成。因此,GPU 仍未充分利用,而 CPU 開銷增加,對整體效能產生負面影響。

DirectX 12 透過引入主表面物件 (PSO) 解決了這個問題,PSO 代表圖形管道的整體狀態。 PSO 被概念化為一個容器,包含渲染影像所需的所有必要元件。透過利用 PSO,GPU 可以對相互依賴的狀態執行搶佔式處理,而不是基於活動圖形管道重複計算它們。

事實上,與其前身 DirectX 11 相比,DirectX 12 顯著降低了 CPU 壓力,從而提高了整體系統效率。事實上,微軟報告稱,新的 API 可以將 CPU 使用率降低多達一半,並將 GPU 生產力提高約五分之一。然而,值得注意的是,這些優化可能會根據各種因素(例如硬體配置和應用程式細節)而有所不同。

為什麼從 DirectX 11 切換到 DirectX 12 並不簡單

適用於 Windows Vista 的 DirectX 11 於 10 月 27 日推出。隨後,DirectX 12 於 2015 年發布,導致 DirectX 11 和 DirectX 12 之間有六年的間隔。在這些年中,使用 DirectX 11 作為基礎創建了許多視頻遊戲。然而,從 DirectX 11 過渡到 DirectX 12 帶來了相當大的挑戰。

DirectX 11 是一種高階程式設計接口,可透過提供更高層級的功能來簡化開發。這會帶來更有效率、更具視覺吸引力的電玩遊戲。相比之下,DirectX 12 在較低的抽象層級上運行,需要專門的專業知識才能有效利用。然而,這種方法可以在細節上更好地控制效能最佳化。

事實上,使用 DirectX 12 創建的遊戲的功效可能取決於其開發人員對 API 的熟練程度。雖然 DirectX 12 提供了某些增強功能,但最終結果將取決於程式設計師有效利用它的能力。因此,許多程式設計師選擇使用更高層級的 API,例如 DirectX 11,因為它們易於使用且可存取。

DX 11 與 DX 12:您應該選擇哪一個?

在《激戰 2》中使用 DirectX 12 的可行性取決於多個因素,包括正在玩的特定遊戲。在這種情況下,激戰 2 被設計為僅在 DirectX 11 上運行,儘管根據使用者的作業系統和硬體功能有可能與 DirectX 12 相容。然而,將遊戲限制在 DirectX 11 上的選擇權僅取決於 ArenaNet 的開發人員。

/bc/images/untitled-design-3.jpg 圖片來源:Martin Kerstein/激戰 2

事實上,值得注意的是,ArenaNet 從DirectX 9 過渡到DirectX 需要相當長的時間9 年。然而,某些電玩遊戲具備同時與DirectX 11 和DirectX 12 運行的能力,例如《堡壘之夜》,用戶可能會在請參閱我們的《要塞英雄》綜合指南以獲取更多見解。此外,《戰地 5》、《古墓奇兵:暗影》等熱門遊戲也提供了這種相容性,讓玩家在遊戲設定中輕鬆地在 DirectX 11 和 DirectX 12 之間切換。

由於某些遊戲同時相容於 DirectX 11 和 12,您可能會詢問它們對遊戲效能的影響。具體來說,您可能會好奇選擇 DX 11 或 DX 12 是否會提高這些遊戲的效能。為了解決這個問題,我們準備了一個視頻,比較了不同遊戲中每個版本的 DirectX 的效果,展示了使用 AMD Ryzen 3600、Nvidia GeForce RTX 3060 Ti 和16GB DDR4 內存。

這項發現讓人感到驚訝,因為 DX 11 和 DX 12 之間的視覺差異通常很小,儘管它們的發佈時間相隔幾年。此外,值得注意的是,與對應的 DX 11 版本相比,每個遊戲的 DX 12 版本的 GPU 和 CPU 利用率往往較低。

事實上,在做出這樣的決定時,選擇與 DirectX 11 或 DirectX 12 相容的圖形處理單元 (GPU) 至關重要。雖然許多現代 GPU 能夠支援 DirectX 12,但某些傳統 GPU(例如 2008 年發布的 Radeon HD)可能不具備處理嚴重依賴這些 API 的新遊戲所需的功能。因此,由於與 DirectX 11 和 DirectX 12 的兼容性有限,使用過時的 GPU 可能會限制人們享受最新遊戲體驗的能力。

DirectX 12 是您的正確選擇嗎?

確定從 DirectX 11 過渡到 DirectX 12 並不是一件簡單的事情,因為它依賴多個變量,包括硬體配置、軟體相容性、作業系統以及特定遊戲是否支援這兩個版本。因此,在得出任何結論之前必須仔細考慮,該結論預計仍適用於 DirectX 的後續迭代。