> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft GDK 的 Direct3D 12.x 概觀

> Direct3D 12.x 是 GDK 中的低階、高效能圖形 API，專為 XBOX 主機的 CPU 與 GPU 效能量身打造，並具備 XBOX 專屬擴充功能。

Microsoft Game Development Kit (GDK) 上的 Direct3D 12 提供類似 PC 上 Direct3D 12 的低階、高效能 API。Direct3D 12.x 專為在 CPU 與 GPU 上達到極致的主機圖形效能而量身打造。Direct3D 相較於 Windows 版本的許多變更，是因為 Microsoft GDK Game OS 使用單一特定硬體平台，而且 Game OS 遊戲需要非常高的圖形效能。

Microsoft Game Development Kit (GDK) 中已新增 Direct3D 12 擴充功能。

* [Direct3D 12 的文件](#ID4ECB)
* [在 Microsoft Game Development Kit (GDK) 上使用 Direct3D 12 的範例](#ID4EAC)
* [標頭檔](#ID4E6C)
* [D3D12.x 方法的傳回值](#ID4END)
* [DirectX Tool Kit 公用程式庫](#ID4E5D)

<a id="ID4ECB" />

## Direct3D 12 的文件

除了 XBOX 擴充功能之外，Microsoft Game Development Kit (GDK) 上的 Direct3D 12 (D3D12.x) 與 PC 上的 Direct3D 12 (PC 上的 D3D12) 的 API 相同。

* PC 上 D3D12 的文件可在 Microsoft Docs 取得：[Direct3D 12 圖形](https://learn.microsoft.com/windows/win32/direct3d12/direct3d-12-graphics)。PC 上 D3D12 的文件也適用於 XBOX One 上的 Direct3D 12。
* Direct3D 功能的工程規格可在 GitHub 上的 [DirectX-Specs](/zh-TW/build/core-features/graphics/directx-specs) 找到。
* Direct3D 12 的 XBOX 擴充功能只記載於 Gaming eXtensions Development Kit (GXDK) 中。如需詳細資訊，請參閱 [d3d12\_x](/zh-TW/reference/graphics/d3d12_x/d3d12_x_members)。GXDK 文件不會重複 PC 上 D3D12 的文件，而只涵蓋 Microsoft Game Development Kit (GDK) 擴充功能 (D3D12.x 專屬的 API 項目)。

<a id="ID4EAC" />

## 在 Microsoft Game Development Kit (GDK) 上使用 Direct3D 12 的範例

部分範例已更新為與 D3D12.x 相容，另有部分範例是專為 D3D12.x 建立。

若要下載最新的範例，請參閱下列位置：

* [XBOX-ATG-Samples](https://github.com/microsoft/Xbox-ATG-Samples/tree/master/XDKSamples/Graphics)
* [XGD Fast Downloads](https://aka.ms/xgddl)，在檔案類型 Developer Education Materials 及組建/版本 All NDA Samples 之下

若要編譯並執行範例的 D3D12.x 版本，請在 **\[方案組態]** 下拉式功能表中，選取包含 "12" 的選項，例如 **Debug12**。

<a id="ID4E6C" />

## 標頭檔

<a id="ID4END" />

## D3D12.x 方法的傳回值

在大多數情況下，如果方法是在 d3d12\_x.h 中宣告並傳回 HRESULT，但 XBOX One 尚未支援該方法，該方法會傳回錯誤碼 **E\_NOTIMPL**，表示「未實作」。

部分傳回 HRESULT 的未實作方法會傳回 S\_OK 而非 E\_NOTIMPL，因為該方法在 Microsoft Game Development Kit (GDK) 上永遠不會執行任何動作。該方法實際上是無作業 (no-op)。

部分傳回 HRESULT 的未實作方法會傳回 S\_OK 而非 E\_NOTIMPL，因為某個範例會呼叫該方法，但該範例實際上並不依賴該方法。例如，SimpleCompute 範例同時具有非同步與同步計算作業的選項。此範例預設以同步方式執行，但其初始化程式碼會呼叫非同步計算，如果未實作的方法傳回 E\_NOTIMPL，就會觸發提前結束。

<a id="ID4E5D" />

## DirectX Tool Kit 公用程式庫

DirectX Tool Kit for DirectX 12 具有可簡化 DirectX 程式設計的公用程式庫。其設計旨在盡可能採用一般的 Direct3D 12，只在平台支援需要時才使用 XBOX 專屬功能。此程式碼基底以 Microsoft 組織專案的形式發佈在 GitHub 上：[DirectXTK12](https://github.com/Microsoft/DirectXTK12)。

這些程式庫有測試套件：[directxtk12test](https://github.com/walbourn/directxtk12test)。

<a id="ID4EZF" />

## 另請參閱

[d3d12\_x](/zh-TW/reference/graphics/d3d12_x/d3d12_x_members)

[Windows PC 上的 Direct3D 12 與 Microsoft Game Development Kit (GDK) 之間的差異](/zh-TW/build/core-features/graphics/d3d12x/d3d12x-differences-from-pc)

[Direct3D 12 參考](https://msdn.microsoft.com/library/windows/desktop/dn770458\(v=vs.85\).aspx)


## Related topics

- [NDA 主題目錄 - Microsoft Learn 線上連結](/zh-TW/nda/nda-topic-directory.md)
- [圖形](/zh-TW/build/core-features/graphics/gc-graphics-toc.md)
- [Direct3D 12 程式設計指南](/zh-TW/build/gdk-and-engines/guides/directx-12-programming-guide.md)
- [Mesh Shader 管線 API 概觀](/zh-TW/build/core-features/graphics/newfeatures/ms/ms-api-design.md)
- [ID3D12GraphicsCommandList3](/zh-TW/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist3/id3d12graphicscommandlist3_public.md)
