像您這樣的讀者幫助支持 MUO。 當您使用我們網站上的鏈接進行購買時,我們可能會賺取附屬佣金。 閱讀更多。
DirectX 12 於 2015 年與 Windows 10 一同發布。Microsoft 的 DirectX 12 的發佈為遊戲玩家和遊戲開發者開創了一個新時代。DirectX 12 能夠在提高 GPU 性能的同時減少 CPU 開銷,因此很快名聲大噪。
但是,提高性能真的像從 DirectX 11 切換到 DirectX 12 一樣簡單嗎? 讓我們通過查看 DirectX 11 和 12 之間的差異來找出答案。
目錄
什麼是 Microsoft 的 DirectX?
正如我們在 Microsoft DirectX 概述中所解釋的那樣,DirectX 是一組用於處理與多媒體相關的任務的 API。 這包括在基於 Microsoft 的平台(如 Windows 和 Xbox)上進行遊戲編程。 為了提供一些背景信息,讓我們簡要談談 API。
應用程序編程接口 (API) 使兩個或多個計算機程序能夠相互通信,我們在 API 概述中對此進行了討論。 把它想像成一部電話。 如果您的媽媽向您發送了一條包含購物清單的短信,您的手機將收到該數據並為您顯示。 這基本上是一個 API。
DirectX 11 和 DirectX 12 有何區別?
那麼,DirectX 11 和 DirectX 12 之間有什麼區別? 簡而言之,DirectX 12 是最新版本的 DirectX。 兩者之間最顯著的區別之一是它們與您的硬件交互的方式。 大多數使用 DirectX 11 開發的遊戲僅使用兩到四個 CPU 內核。 這些核心之一通常專門用於告訴 GPU 要做什麼。
然後遊戲使用剩餘的核心來處理各種 CPU 密集型設置,例如游戲的粒子或繪製距離。 另一方面,DirectX 12 將 CPU 的工作負載分散到多個內核,還允許每個內核同時與 GPU 對話。
DirectX 12 還帶有一些花哨的功能。 這包括異步計算和管道狀態對象 (PSO)。 異步計算通過允許多個工作負載並行工作來提高 GPU 利用率。 這實質上釋放了 GPU 的全部潛力。
除了圖形渲染之外,您的 GPU 還負責處理範圍廣泛的其他任務,例如運行機器學習算法。 使用 DirectX 11,GPU 一次只能按特定順序執行其中一項任務。 發生這種情況時,性能會受到影響,因為您的所有 GPU 資源都沒有被使用。
把它想像成餐廳的服務員。 當服務員第一次點菜時,他們會先問您要喝什麼。 一旦你收到你的飲料,他們就會問你想要什麼主菜。 您的訂單是分步進行的。 在您吃完主菜之前,服務員不會問您想要什麼甜點。 雖然這是有效的,但它並沒有達到應有的效率。
在計算中,服務員的每個任務都將由不同的 GPU 資源處理。 在您收到飲料之前,點主菜所需的 GPU 資源將處於閒置狀態。 借助 DirectX 12 的異步計算,服務員可以像在快餐連鎖店中一樣一次性接受您的所有訂單。 這可以最大限度地提高 GPU 使用率並提高您的遊戲性能。
DirectX 12 還引入了 PSO。 使用 DirectX 11,當遊戲的幾何圖形被提交給 GPU 進行渲染時,各種硬件設置負責解釋和渲染該數據。 這稱為圖形管道,是 GPU 渲染幀時發生的數據輸入和輸出流。 然而,DirectX 11 的圖形管道並不完美。
此管道包含不同狀態的集合,包括光柵化狀態、混合狀態和深度模板狀態,以及其他組件。 在 DirectX 11 中,這些不同狀態之間存在依賴關係。 因此,在定義前一個狀態之前,一個狀態無法完成。 這會降低 GPU 利用率並以性能為代價增加 CPU 開銷。
為了解決這個問題,DirectX 12 引入了 PSO,它們是描述整個圖形管道狀態的對象。PSO 就像一個瓶子,其中包含創建圖像所需的各種狀態和組件。 這允許 GPU 預處理每個依賴狀態,而不必根據當前圖形管道不斷地重新計算狀態。
這顯著降低了 DirectX 11 中的 CPU 開銷並提高了性能。 那麼,這種差異實際上是什麼樣的呢? 好吧,根據 Microsoft 的說法,DirectX 12 可將 CPU 開銷降低多達 50%,並將 GPU 性能提高多達 20%。 雖然這些都是一些實質性的改進,但這並不意味著您會看到相同的結果。
為什麼從 DirextX 11 切換到 DirectX 12 並不簡單
DirectX 11 於 2009 年 10 月 27 日首次針對 Windows Vista 發布。因此,隨著 DirectX 12 在 2015 年的發布,DirectX 11 和 DirectX 12 之間相隔六年。在此期間,已經開發了數以千計的遊戲使用 DirectX 11。不幸的是,從 DirectX 11 遷移到 DirectX 12 絕非易事。
DirectX 11 是所謂的高級 API。 簡而言之,高級 API 更易於開發人員使用。 結果是穩定、精美且可玩的遊戲。 另一方面,DirectX 12 是一個低級 API,與 DirectX 11 相比是不同的野獸。雖然它允許開發人員在粒度級別微調優化,但它也需要廣泛的知識才能使用。
也就是說,根據開發者對 API 的了解,使用 DirectX 12 開發的遊戲最終可能會出現較差的性能。DirectX 12 帶來了一些改進,但這實際上取決於開發人員實施它的能力。 出於這個原因,許多開發人員選擇堅持使用 DirectX 11 等高級 API。
您應該選擇 DirectX 11 還是 DirectX 12?
答案取決於幾件事,例如您嘗試運行的遊戲。 例如,Guild Wars 2 運行在 DirectX 11 上。即使您的操作系統和硬件使用 DirectX 12,您也無法在 Guild Wars 2 中選擇 DirectX 11,因為遊戲不支持它。 這完全是開發商 ArenaNet 的決定。
圖片來源:Martin Kerstein/Guild Wars 2
信不信由你,ArenaNet 用了九年時間才從 DirectX 9 切換到 DirectX 11。但是,有些遊戲確實同時支持 DirectX 11 和 DirectX 12。Fortnite(閱讀我們的 Fortnite 備忘單), 例如。 通過遊戲的設置,用戶可以在兩個版本之間切換。 總而言之,並非所有遊戲都支持 DirectX 11 和 DirectX 12。對於那些支持的遊戲,請在兩者之間切換並自行確定哪個在您的 PC 上表現更好。
您是否可以在 DirectX 11 和 DirectX 12 之間進行選擇還取決於您的硬件。 幾乎任何現代 GPU 都將支持 DirectX 12,但對於像 Radeon HD 4870 這樣的老式 GPU 來說卻不是這樣。這款 GPU 於 2008 年發布,最多只支持 DirectX 10。這意味著它無法運行大多數 使用 DirectX 11 和 DirectX 12 運行的現代遊戲。
DirectX 12 是您的正確選擇嗎?
總而言之,從 DirectX 11 切換到 DirectX 12 並不像聽起來那麼非黑即白。 這取決於多種因素,例如硬件、軟件、操作系統,以及一款遊戲是否完全支持這兩者。 在做出決定之前需要考慮所有這些因素,未來幾代 DirectX 也可能如此。