Direct3D 12 程式設計環境設定

描述構成生產力 Direct3D 12 開發環境的安裝、工具和支持連結庫。

開發環境

Direct3D 12 標頭和連結庫是 Windows 10 SDK 的一部分。 使用 Direct3D 12 不需要個別下載或安裝。

安裝 Windows 10 SDK 軟體和 Visual Studio 之後,Direct3D 12 程式設計環境的設定就會完成。 建議使用 Visual Studio 2019,因為它會包含 D3D12 圖形偵錯工具,但舊版 Visual Studio 適用於程式開發。

若要使用 Direct3D 12 API,請包含 D3d12.h 並連結到 D3d12.lib,或直接在 D3d12.dll 中查詢進入點。

下列標頭和連結庫可供使用。 靜態庫的位置取決於計算機上執行的 Windows 10 版本(32 位或 64 位)。

標頭或連結庫檔名 描述 安裝位置
D3d12.h Direct3D 12 API 標頭 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12.lib 靜態 Direct3D 12 API 存根連結庫 %WindowsSdkDir\Lib%WindowsSDKVersion%\\um\arch
D3d12.dll 動態 Direct3D 12 API 連結庫 %WINDIR%\System32
D3d12SDKLayers.h Direct3D 12 偵錯標頭 %WindowsSdkDir\Include%WindowsSDKVersion%\\um
D3d12SDKLayers.dll 動態 Direct3D 12 偵錯連結庫 %WINDIR%\System32

支援的語言

不支援 C++ 是 Direct3D 12 開發、C# 和其他 .NET 語言唯一支援的語言。

協助程序結構

有一些協助程序結構,特別是可讓您輕鬆地初始化一些 D3D12 結構。 這些結構和某些公用程式函式位於標頭 D3dx12.h 中。 此標頭是 開放原始碼,並可視需要由開發人員修改 - 從 D3D12 協助程式連結庫下載,並參考 D3D12 的協助程序結構和函式。

記憶體管理連結庫

記憶體管理協助程式連結庫可供下載,您可以整合到您的應用程式中,以更緊密地符合 D3D11 記憶體管理行為。 作為 D3D11 樣式管理連結庫,它最適合使用仍在使用 已認可資源 樣式配置策略的應用程式。 特別是,連結庫應該被視為一個墊腳石,可讓您在記憶體限制案例中(例如,低端記憶體卡、4k、Ultra 設定等等)時,回到 D3D11 效能良好的記憶體管理。 D3D12 API 確實啟用可讓您透過 D3D11 獲得更佳記憶體效率的技術,不過這些技術可能具有挑戰性且耗時的實作。

請注意,此連結庫是進行中的工作,而且可能會隨著時間而變更。 使用下列連結來存取連結庫和範例。

支援的工具和連結庫

下列連結庫全都可以與 Direct3D 12 搭配使用。

程式庫 目的 文件
DirectX 12 的 DirectX 工具組 大量協助程式類別,用於撰寫適用於 通用 Windows 平台 (UWP) 應用程式的 Direct3D 12 C++ 程式代碼、適用於 Windows 10 的 Win32 傳統型應用程式,以及 Xbox One 專屬應用程式。 DirectX12TK Wiki
DirectXTex 使用此選項來讀取和寫入 DDS 檔案,以及執行各種紋理內容處理作業,包括重設大小、格式轉換、Mip 對應產生、Direct3D 運行時間紋理資源的區塊壓縮,以及高度對應至一般地圖轉換。 DirectXTex Wiki
DirectXMesh 使用此選項來執行各種幾何內容處理作業,包括產生一般和正切框架、三角形相鄰計算,以及頂點快取優化。 DirectXMesh Wiki
DirectXMath 大量的協助程序類別和方法,可支援向量、純量、矩陣、四元數和其他許多數學運算。 MSDN 的 DirectXMath 檔
UVAtlas 使用此專案來建立和封裝異動圖紋理圖集。 UVAtlas Wiki

 

範例

如需工作 D3D12 範例的清單,以及如何尋找和執行範例,請參閱 工作範例

如需如何新增程式代碼以啟用特定功能的逐步解說,請參閱 D3D12 程式代碼逐步解說。

偵錯層

偵錯層提供廣泛的額外參數和一致性驗證(例如驗證著色器連結和資源系結、驗證參數一致性,以及報告錯誤描述)。

注意

針對 Windows 10,若要建立支援偵錯層的裝置,請啟用「圖形工具」選用功能。 在 Windows 10 22H2 上,移至 [系統] 底下的 [設定] 面板。 在舊版 Windows 10 上,移至 [應用程式>與功能] 下的 [設定] 面板。 移至 [選用功能 > ] [新增功能],然後尋找 「圖形工具」。

預設會包含支持偵錯層 D3D12SDKLayers.h 偵錯層所需的標頭。

當偵錯層列出記憶體流失時,它會輸出物件介面指標的清單及其易記名稱。 預設易記名稱為 「<未命名>」。 您可以使用ID3D12Object::SetName 方法來設定易記名稱 一般而言,您應該從生產版本編譯這些呼叫。

我們建議您使用偵錯層來偵錯您的應用程式,以確保它們能清除錯誤和警告。 偵錯層可協助您撰寫 Direct3D 12 程式代碼。 此外,當您使用偵錯層時,您的生產力可能會增加,因為您可以立即看到其來源的模糊轉譯錯誤,甚至黑螢幕的原因。 偵錯層提供許多問題的警告。 例如:

  • 忘記設定紋理,但在像素著色器中讀取紋理。
  • 輸出深度,但沒有深度樣板狀態系結。
  • 使用 INVALIDARG 建立紋理失敗。

設定編譯程式定義D3DCOMPILE_DEBUG,告知 HLSL 編譯程式將偵錯資訊包含在著色器 Blob 中。

#define D3DCOMPILE_DEBUG 1

如需所有偵錯介面和方法的詳細數據,請參閱偵 錯層參考

如需使用偵錯層的概觀資訊,請參閱 瞭解 D3D12 偵錯層

教育影片

DirectX 進階學習影片教學課程中有許多 Direct3D 12 和 Windows 10 相關影片,包括圖形偵錯工具上的影片,以及報告圖形 Bug。

瞭解 Direct3D 12