什麼是 Direct3D 12?

DirectX 12 引進下一版的 Direct3D—DirectX 的核心是 3D 圖形 API。 Direct3D 12 比任何舊版更快且更有效率。 Direct3D 12 可啟用更豐富的場景、更多物件、更複雜的效果,以及現代化 GPU 硬體的完整使用率。

Direct3D 12 如何更快且更有效率?

Direct3D 12 是唯一的,因為它提供比舊版低層級的硬體抽象概念,這可讓您大幅改善標題 (或其他應用程式) 的多核心 CPU 調整。 針對一件事,使用 Direct3D 12,您的標題會負責自己的 記憶體管理。 此外,藉由使用 Direct3D 12,您的標題和應用程式可透過 命令佇列和清單描述中繼資料表和精簡 管線狀態物件等功能來降低 GPU 額外負荷。

Direct3D 12 和 Direct3D 11.3 引進一組轉譯管線的新功能。

  • 保守的點陣化 ,以啟用可靠的點擊偵測。
  • 磁片區磚資源 可讓串流三維資源視為全都在視訊記憶體中。
  • 點陣化排序檢視 ,以啟用可靠的透明度轉譯。
  • 設定著色器內的樣板參考,以啟用特殊陰影和其他效果。
  • 改善紋理對應和具類型的未排序存取檢視, (UAV) 載入。

我應該投資 Direct3D 12 有多深?

相較于 Direct3D 11) ,Direct3D 12 提供四個主要優點給圖形開發人員 (。

  • 大幅降低 CPU 額外負荷。
  • 大幅降低耗電量。
  • GPU 效率最多 (大約) 20%。
  • Windows 10裝置的跨平臺開發, (PC、平板電腦、主控台、行動裝置) 。

Direct3D 12 是專為進階圖形設計人員所設計,可供使用。 其會呼叫重要的圖形專業知識,以及高階的微調。 Direct3D 12 的設計目的是充分利用多執行緒、謹慎的 CPU/GPU 同步處理,以及從一個用途到另一個用途的資源轉換和重複使用。 這些是需要大量記憶體層級程式設計技能的技術。

Direct3D 12 的另一個優點是其小型 API 使用量。 大約有 200 個函式;和大約其中一分之一的動作會執行所有繁重的工作。 這表示您身為圖形開發人員,應該能夠自行教育完整 API 集,而不需要記住太多 API 名稱。

Direct3D 11 會繼續是 Direct3D 12 的可行選項。 Direct3D 12 的許多新轉譯功能都可在 Direct3D 11.3中使用。 Direct3D 11.3 是低階圖形引擎 API;而 Direct3D 12 更深入。

您的開發小組至少有兩種方式可以處理 Direct3D 12 標題。

獨佔使用 Direct3D 12

對於最終利用 Direct3D 12 優點的專案,您應該從頭開始開發高度自訂的 Direct3D 12 引擎。

如果您是圖形開發人員,請瞭解標題內的資源使用和重複使用,而且您可以藉由將上傳和複製降至最低來利用,然後您可以針對這些標題開發及自訂有效率的引擎。 效能改善可能非常龐大,可釋出 CPU 時間以增加繪製呼叫數目,因此將更多亮度新增至圖形。

程式設計投資相當重要,因此您應該考慮從頭開始偵錯和檢測專案。 執行緒、同步處理和其他計時錯誤可能很困難。

搭配 Direct3D 11 搭配使用 Direct3D 12

短期的方法就是解決 Direct3D 11 標題中的已知瓶頸。 您可以使用 Direct3D 12 Interop 和/或 D3D11On12 技術來解決這些技術,這可讓兩個 API 版本一起運作。 此方法可將現有 Direct3D 11 圖形引擎所需的變更降至最低。 不過,效能提升將受限於 Direct3D 12 程式碼所解決的瓶頸。

Microsoft DirectX 12 (和圖形教育) 影片

適用于圖形開發人員的增強式教育。 這些影片涵蓋簡報模式、移植到 DirectX 12、保守點陣化、圖形工具、角度、Win2D 等主題,以及 GDC、組建等事件。 技術 DirectX 12 內容前面會加上 DirectX 12。 請在這裡直接從 Direct3D 12 功能小組學習秘訣和訣竅。 我們想要協助您使用最新的版本和工具,讓您的遊戲成為最佳版本!

結論

Direct3D 12 全都是關於大幅圖形引擎效能。 簡化開發、高階建構和編譯器支援,以啟用此功能。 驅動程式支援和輕鬆偵錯會維持在 Direct3D 11 的同位。

Direct3D 12 是新的領域。 等待詢問專家來探索的領域。