> ## 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.

# XBOX One 上的 Direct3D 建立與使用方式

> XBOX One 上的 Direct3D 建立與使用方式

XBOX One 與 Windows 上的 Direct3D 在執行階段選擇、交換資源、平面視訊格式、取得全螢幕狀態、高階著色器語言 (HLSL) 以及 Windows 影像處理元件 (WIC) 方面有一些差異。

* [執行階段選擇](#ID4EWB)
* [交換資源](#ID4EGC)
* [平面視訊格式](#ID4E5C)
* [取得全螢幕狀態](#ID4ERD)
* [高階著色器語言 (HLSL)](#ID4EYE)
* [Windows 影像處理元件 (WIC)](#ID4EBG)

<a id="ID4EWB" />

## 執行階段選擇

對於 XBOX One 遊戲應用程式，無法使用 Windows Advanced Rasterization Platform (WARP) 介面卡。可以使用 ID3D12Debug::EnableDebugLayer 在執行階段中啟用偵錯驗證，但不是透過 Windows 所採用的傳統分層方式。也可以使用 ID3D12Debug::SetProcessDebugFlags 來選擇支援 PIX 分析的檢測執行階段，其執行效能更接近零售版本。

<a id="ID4EGC" />

## 交換資源

XBOX One 不支援交換鏈結，而是允許直接呈現可顯示的資源物件。由遊戲自行建立和管理其交換資源集區。如需呈現方式變更的詳細資訊，請參閱 [XBOX One 上的呈現與畫面排程](/zh-TW/build/core-features/graphics/directx/frame-scheduling-and-presentation)。

目前支援作為交換資源的格式如下所列。部分格式之間的差異僅在於色彩順序。

* DXGI\_FORMAT\_B8G8R8A8\_UNORM
* DXGI\_FORMAT\_R8G8B8A8\_UNORM
* DXGI\_FORMAT\_B8G8R8A8\_UNORM\_SRGB
* DXGI\_FORMAT\_R8G8B8A8\_UNORM\_SRGB
* DXGI\_FORMAT\_R10G10B10A2\_UNORM

<a id="ID4E5C" />

## 平面視訊格式

XBOX One 目前支援的視訊格式為 NV12、P010、P016、420\_opaque 與 NV11。

如需詳細資訊，請參閱 [DXGI\_FORMAT 列舉](https://learn.microsoft.com/windows/desktop/api/dxgiformat/ne-dxgiformat-dxgi_format)。

<a id="ID4ERD" />

## 取得全螢幕狀態

無法在 XBOX One 上呼叫 **GetFullScreenState**。這是因為無法建立交換鏈結，而且此方法僅適用於桌面 DirectX 應用程式。如果您需要知道第一個圖形何時向使用者顯示，請改為使用 D3D12XBOX\_FRAME\_STATISTICS\_TYPE\_DISPLAY 類型呼叫 ID3D12Device::GetFrameStatisticsX。

只要您的遊戲視窗處於執行中的程序生命週期管理 (PLM) 狀態，您就應該假設遊戲視窗會保持相同狀態。

如需詳細資訊，請參閱：

* [XBOX 遊戲生命週期](/zh-TW/build/console-features/console-workflows/xbox-game-life-cycle)

<a id="ID4EYE" />

## 高階著色器語言 (HLSL)

XBOX One 上的高階著色器語言 (HLSL) 是 [Microsoft HLSL](https://msdn.microsoft.com/library/windows/desktop/bb509561\(v=vs.85\).aspx) 的完整實作。

HLSL 與[圖形管線](https://msdn.microsoft.com/library/windows/desktop/ff476882\(v=vs.85\).aspx)記載於 Microsoft Docs。不過，其中有一些小的文件錯誤：

* **GetRenderTargetSamplePosition** 列為傳回 UINT，但此方法實際上傳回的是 **float2**。
* 傳回類型 UINT 不適用於著色器語言。正確的值是小寫的 **uint**，或完整拼寫為 **unsigned int**。

<a id="ID4EBG" />

## Windows 影像處理元件 (WIC)

Windows 影像處理元件 (WIC) 是一個可擴充的平台，為數位影像提供低階 API。

XBOX One 支援 WIC2。如需 WIC2 新功能的詳細資訊，請參閱 [WIC 的新功能](https://learn.microsoft.com/windows/win32/wic/what-s-new-in-wic-for-windows-8-1)。如需 WIC 格式的詳細資訊，請參閱 [Windows 影像處理元件](https://learn.microsoft.com/windows/win32/wic/-wic-lh) 或 [GitHub 上的 DirectXTex wiki](https://github.com/microsoft/DirectXTex/wiki/DirectXTex)。

XBOX One 遊戲 (Game OS) 對 WIC 的支援有一些注意事項。

* 不支援相片中繼資料原則運算式。
* 不支援 HD Photo / JPEG-XR 轉碼器 (以 GUID\_ContainerFormatWmp 識別，副檔名為 .jxr、.hdp 與 .wdp)。
* BMP 轉碼器不支援部分較舊的 GDI 特定格式變體。
* 不支援部分像素格式轉換。
  * GUID\_WICPixelFormat48bppRGBFixedPoint
  * GUID\_WICPixelFormat48bppBGRFixedPoint
  * GUID\_WICPixelFormat16bppGrayFixedPoint
  * GUID\_WICPixelFormat96bppRGBFixedPoint
  * GUID\_WICPixelFormat64bppRGBAFixedPoint
  * GUID\_WICPixelFormat64bppBGRAFixedPoint
  * GUID\_WICPixelFormat128bppRGBAFixedPoint
  * GUID\_WICPixelFormat64bppRGBAHalf
  * GUID\_WICPixelFormat48bppRGBHalf
  * GUID\_WICPixelFormat32bppRGBE
  * GUID\_WICPixelFormat16bppGrayHalf
  * GUID\_WICPixelFormat32bppGrayFixedPoint
  * GUID\_WICPixelFormat64bppRGBFixedPoint
  * GUID\_WICPixelFormat128bppRGBFixedPoint
  * GUID\_WICPixelFormat64bppRGBHalf
  * GUID\_WICPixelFormat64bppPRGBAHalf
  * 所有 CMYK 格式與 nChannel 格式

如需相關資訊，請參閱 [XBOX 上的 Windows 影像處理元件 (WIC)](/zh-TW/build/core-features/graphics/image-processing-overview)。

<a id="ID4EABAC" />


## Related topics

- [NDA 主題目錄 - Microsoft Learn 線上連結](/zh-TW/nda/nda-topic-directory.md)
- [XR048 設定檔設定使用方式](/zh-TW/publishing/certification/fma/xr-048.md)
- [開發新的 GDK 遊戲](/zh-TW/home/build-first-title/developing-new-titles.md)
- [XBOX Series X|S 上的 Sampler Feedback 与 SFS](/zh-CN/build/core-features/graphics/newfeatures/sfs/index.md)
- [NDA 主题目录 - Microsoft Learn 在线链接](/zh-CN/nda/nda-topic-directory.md)
