DirectX SDK 在哪裡?

從Windows 8開始,DirectX SDK 會包含在Windows SDK 中。

我們最初建立了 DirectX SDK 作為高效能平臺,用於在Windows上進行遊戲開發。 隨著 DirectX 技術成熟,它們變得與更廣泛的應用程式有關。 目前,電腦中的 Direct3D 硬體可用性甚至會驅動傳統桌面應用程式,以使用圖形硬體加速。 平行地,DirectX 技術更與Windows整合。 DirectX 現在是Windows的基本部分。

因為Windows SDK 是Windows的主要開發人員 SDK,所以 DirectX 現在會包含在其中。 您現在可以使用 Windows SDK 來建置絕佳的遊戲,以進行Windows。 若要下載 Windows 8.x SDK 或 Windows 10 SDK,請參閱Windows SDK 和模擬器封存

下列技術和工具,先前是 DirectX SDK 的一部分,現在是Windows SDK 的一部分。

技術或工具 描述
Windows圖形元件
Windows SDK 中提供Direct3D和其他Windows圖形 API 的標頭和程式庫,例如Direct2D
[!注意]
已淘汰的 D3DX9/D3DX10/D3DX11 公用程式程式庫可透過NuGet取得,但也有一些開放原始碼替代方案。 D3DCSX DirectCompute 公用程式程式庫和可轉散發 DLL 可在 Windows SDK 中使用。 D3DX12 可在GitHub上使用。

HLSL 編譯器 (FXC.EXE)
HLSL編譯器是Windows SDK 中 bin 資料夾下適當架構子目錄中的工具。
[!注意]
D3DCompiler API 和可轉散發 DLL 可在 Windows SDK 中使用。


針對 DirectX 12 開發,請使用 Windows SDK 中的 DXCompiler,並裝載于GitHub
適用于 Windows 的 PIX
Windows工具的 PIX 取代現在是Microsoft Visual Studio的功能,稱為Visual Studio圖形偵錯工具。 這項功能已大幅改善可用性、支援 Windows 8 和 Direct3D 11.1,以及與傳統Microsoft Visual Studio功能整合,例如HLSL偵錯的呼叫堆疊和偵錯視窗。 如需這項新功能的詳細資訊,請參閱 偵錯 DirectX 圖形

如需 DirectX 12 開發,請參閱最新一代的 PIX on Windows
適用于 Windows 的XAudio2
XAudio2 API 現在是 Windows 8.x 和 Windows 10 中的系統元件。 XAudio2 的標頭和程式庫可在 Windows SDK 中使用。 如需 Windows 7 支援,請參閱XAudio2Redist
適用于 Windows 的XInput
XInput 1.4 API 現在是 Windows 8.x 和 Windows 10 中的系統元件。 XInput 的標頭和程式庫可在 Windows SDK 中使用。
[!注意]
舊版 XInput 9.1.0 也提供Windows 7 或更新版本的一部分。

XNAMATH
最新版的 XNAMATH 已針對新的指令集以及 ARM/ARM64 更新,現在是 DirectXMath。 DirectXMath 的標頭可在 Windows SDK 和GitHub上使用。
DirectX 主控台和 DirectX 功能檢視器
DirectX 主控台和 DirectX 功能檢視器公用程式會包含在 Windows SDK 中 bin 資料夾下的適當架構子目錄中。 DirectX 功能檢視器也可在GitHub上使用。
XACT
Windows不再支援 Xbox 音訊跨平臺工具 (XACT) 。
遊戲總管 和 GDFMAKER
遊戲總管 API 會將遊戲呈現給Windows的使用者。 只有 Windows Vista 和 Windows 7 才支援遊戲總管 API。 使用遊戲定義檔案製作工具 (GDFMAKER.EXE) 來宣告Windows Microsoft Store應用程式的遊戲評等。
遊戲定義檔案製作工具 (GDFMaker.exe) 包含在 Windows SDK 之 bin 資料夾下的 x86 子目錄中,並支援Windows Microsoft Store應用程式和 Win32 傳統型應用程式。

範例
您可以在DirectX 範例存放庫中找到醒目提示 DirectX 12 技術Windows的範例應用程式。 舊版 Direct3D 的大部分範例也可以在線上取得。 如需這些範例的詳細資訊,請參閱 DirectX SDK 範例目錄
受控 DirectX 1.1
.NET DirectX 元件已被取代,不建議供新應用程式使用。 有一些替代方案可供使用。 請參閱 DirectX 和 .NET

 

如有需要,您可以從 Microsoft 下載中心 下載舊版 DirectX SDK,但不建議用於新專案。

注意

如果您已安裝特定版本的 Visual C++ 2010 可轉散發套件,則 DirectX SDK 無法安裝。 如需修正此問題的詳細資訊和解決方案,請參閱 安裝 DirectX SDK (2010 年 6 月) 時發生「S1023」錯誤

 

搭配使用 DirectX SDK 專案搭配 Visual Studio

2010 年 6 月 DirectX SDK 的範例受到進階 Visual Studio SKU (Microsoft Visual Studio Professional 2012 Microsoft Visual Studio Ultimate 2012 的支援,Microsoft Visual Studio Professional 2013 或 Microsoft Visual Studio Ultimate 2013) Windows 7 和 Windows 8更新版本。 由於 DirectX 標頭和程式庫轉換至 Windows SDK,因此需要變更專案設定,才能正確建置這些範例,以使用進階Visual Studio SKU 封裝Windows 8 SDK 和更新版本。

這些步驟也適用于相依于 DirectX SDK 的您自己的專案。

  1. 請確定您的開發電腦上安裝 DirectX SDK 的 2010 年 6 月版本。 如果您安裝到執行Windows 8和更新版本的電腦上,系統會提示您啟用 .NET 3.5 作為 DirectX SDK 的必要安裝。

    注意

    如果您已安裝特定版本的 Visual C++ 2010 可轉散發套件,則 DirectX SDK 無法安裝。 如需修正此問題的詳細資訊和解決方案,請參閱 安裝 DirectX SDK (2010 年 6 月) 時發生「S1023」錯誤

     

  2. 請確定您使用其中一個進階Visual Studio SKU。 Microsoft Visual Studio Express 2012 for Windows 8 或 Microsoft Visual Studio Express 2013 for Windows 將不會建置 Windows 8 和更新版本的傳統型應用程式,例如 DirectX SDK 範例。 若要安裝其中一個進階Visual Studio SKU,請移至:Visual Studio下載,並遵循指示。

  3. 使用 DirectX SDK 範例瀏覽器來安裝所需範例的專案檔。 開啟範例的 Microsoft Visual Studio 2010 相容方案檔, (尾碼為_2010) 。

  4. 如果您要在僅安裝 Microsoft Visual Studio 2012 或 Microsoft Visual Studio 2013 的系統上開啟範例,您會收到下列訊息:「此解決方案包含一或多個使用舊版 VC++的編譯器和程式庫的專案。 每個專案都可以更新為使用 VC++ 編譯器和程式庫, (v110) 」。在開啟專案之前,請先從這個對話方塊選擇 [更新] 選項進行更新。

    否則,您可以在 Visual Studio 2012 或 Visual Studio 2013 C++ 11 編譯器和程式庫載入之後更新,方法是在解決方案上按一下滑鼠右鍵並選擇 [更新VC++專案]。

  5. D3DX 不會被視為標準 API,可在 Windows 8 和更新版本中使用 Direct3D,因此不會包含在對應的Windows SDK 中。 調查使用 Direct3D API 的替代解決方案。 針對舊版專案,例如 Windows 7 (和更早版本的) DirectX SDK 範例,您必須執行下列步驟,才能使用 DirectX SDK 建置具有 D3DX 的應用程式:

    1. 修改專案的VC++目錄,如下所示,以針對 SDK 標頭和程式庫使用正確的順序。

      i. 開啟專案的 [屬性] ,然後選取 [VC++目錄] 頁面。 ii. 選取 [所有組態] 和 [所有平臺]。 iii. 請依照下列方式設定這些目錄:
      • 可執行檔目錄:< 繼承自父代或專案預設值 > (右側下拉式清單)
      • 包含目錄: $ (IncludePath) ;$ (DXSDK_DIR) Include
      • 包含程式庫目錄: $ (LibraryPath) ;$ (DXSDK_DIR) Lib\x86

      iv. 按一下 [套用] 。
      v. 選擇 x64 平臺
      vi. 設定連結 庫目錄 ,如下所示:

      • 程式庫目錄: $ (LibraryPath) ;$ (DXSDK_DIR) Lib\x64
    2. wherever 「d3dx9.h」, 「d3dx10.h」 或 「d3dx11.h」 包含在您的專案中,請務必明確包含 「d3d9.h」、「d3d10.h」 和 「dxgi.h」 或 「d3d11.h」 和 「dxgi.h」,以確保您挑選較新的版本。 如有需要,您可以停用 警告 C4005 ;不過,這個警告表示您使用的是舊版的這些標頭。

    3. 移除專案中 DXGIType.h 的所有參考。 此標頭不存在於Windows SDK 中,而 DirectX SDK 版本與新的 winerror.h 衝突。

    4. DirectX SDK 安裝會將所有 D3DX DLL 安裝到您的開發電腦上。 確定必要的 D3DX 相依性會隨任何範例或您的應用程式一起轉散發,如果它移到另一部電腦。

    5. 請注意,目前使用 D3DX11 的取代技術包括 DirectXTexDirectXTKDirectXMeshUVAtlas。 D3DXMath 會由 DirectXMath取代。

  6. 請觀察下列條件,確定您使用的是新版本的 HLSL 著色器編譯器:

    1. 根據步驟 5 變更可執行檔目錄會導致專案組建從 Windows SDK 安裝使用 FXC。 請注意,HLSL 檔案現在已由Visual Studio正式辨識。 您可以將這些專案新增為專案檔,並透過專案系統設定編譯器選項。

    2. 透過舊版 D3DX DLL 叫用執行時間編譯將會使用舊版的 HLSL 編譯器不正確。 將程式碼中 D3DXCompile*、D3DX10Compile*和 D3DX11Compile* API 的所有參考取代為 D3DCOMPILER_46.DLL 或 D3DCOMPILER_47.DLL 中的 D3DCompile 函式。

    3. 任何使用執行時間著色器編譯的專案都必須D3DCOMPILER_xx.DLL複製到專案的本機可執行檔路徑。 這個 DLL 位於%ProgramFiles (x86) %\Windows Kits\8.0\Redist\D3D\ < arch >%ProgramFiles (x86) %\Windows Kits\8.1\Redist\D3D\ < arch ><>下的子 Windows目錄中。

      Windows SDK 中的D3DCOMPILER_46.DLL或D3DCOMPILER_47.DLL不是系統元件,不應複製到Windows系統目錄。 您可以將此 DLL 轉散發給具有應用程式並存 DLL 的其他電腦。

  7. 任何使用 XInput API 且旨在在 Windows 7 或較舊版本的 Windows 上執行的專案,都必須使用舊版版本 (9.1.0) ,或必須從 DirectX SDK 明確包含此元件的標頭和程式庫。 XInput 標頭和XINPUT。Windows SDK 中包含的 LIB 只會以隨附于 Windows 8 和更新版本的 1.4 (1.4 版) 為目標。 相同的標頭可以與 XINPUT9_1_0.LIB 搭配使用,以使用舊版的 Windows。 舊版 XInput 不會偵測完整的功能或支援控制器整合的音訊,因此如果需要這些功能的支援,您必須使用 DirectX SDK 版本 (1.3) 。

    若要使用功能完整的下層 XInput API,您應該 #include 直接從 DirectX SDK 使用特定的 XInput 標頭:

    #include <%DXSDK_DIR%Include\xinput.h>

    ...在 [其他相依性] 的連結器選項中,直接連結至 DirectX SDK XInput 程式庫:

    %DXSDK_DIR%Include\ < arch > \xinput.lib

    XINPUT1_3.DLL二進位檔會由開發電腦上的 DirectX SDK 安裝安裝安裝至Windows系統目錄。 您必須使用 DirectX SDK 的 DirectX 安裝程式安裝,將這個二進位檔與您的應用程式重新發佈。

  8. 任何使用 XAudio2 API 且旨在在 Windows 7 或較舊版本的 Windows 上執行的專案,都必須使用舊版 (9.1.0) ,或明確包含 DirectX SDK 中此元件的標頭和程式庫。 Windows SDK 隨附的 XAudio2 標頭和程式庫,只以包含在Windows 8一部分的版本 (2.8) 為目標。

    例如,使用 XAudio2 時,您應該 #include 直接從 DirectX SDK 取得特定的 XAudio2 標頭:

    #include <%DXSDK_DIR%Include\xaudio2.h>

    ...在 [其他相依性] 的連結器選項中,直接連結至 DirectX SDK XAudio2 程式庫:

    %DXSDK_DIR%Include\arch > \ < xaudio2.lib

    XAUDIO2_7.DLL二進位檔會由開發電腦上的 DirectX SDK 安裝安裝安裝至Windows系統目錄。 您必須使用 DirectX SDK 的 DirectX 安裝程式安裝,將這些程式庫與應用程式重新發佈。

  9. 如果您已使用 DirectX SDK 搭配過去版本的 Visual Studio,Visual Studio 2010 升級可能已將 DirectX SDK 路徑移轉至您的預設專案設定。 建議您移除這些設定,以防止未來的建置錯誤。 在%USERPROFILE%\AppData\Local\Microsoft\MSBuild\v4.0目錄中,修改Microsoft.Cpp.Win32.userMicrosoft.Cpp.x64.user檔案,以移除所有DXSDK_DIR路徑的參考。 或者,您可以移除 < 包含 Path 專案的完整 PropertyGroup > 節點,例如 < ExecutablePath 和 < IncludePath >> ,以還原為標準預設值。 如果您沒有看到這些檔案中DXSDK_DIR的參考,則不需要變更。

  10. 如果產生的應用程式 Windows支援 Service Pack 2 (SP2) 以及 Windows 7 和 Windows 8 及更新版本,請將名為 _WIN32_WINNT的預處理器定義設定為 0x600。 如果它只支援 Windows 7 和 Windows 8 及更新版本,請將它設定為 0x601。

    例如:

    1. 開啟專案的[屬性],然後選取[C/C++>預處理器]。
    2. 選取[所有組態] 和 [所有平臺]。
    3. 移至 [ 預處理器定義 ] 區段並設定 _WIN32_WINNT=0x600。
    4. 按一下 [套用] 。

適用於 Windows 與 DirectX SDK 的遊戲

DirectX SDK (2021 版) 在哪裡?

特定年齡的 DirectX SDK

沒有 D3DX 的生存