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

# 120Hz 支援

> 120Hz 支援

本主題說明檢查 120Hz 支援以及為遊戲啟用 120Hz 的程序。

* [概觀](#overview)
* [如何啟用](#how-to-enable)
* [建議用於 120Hz 開發的顯示器](#recommended-displays)
* [如何得知您的顯示器是否支援 120 Hz](#display-supports)
* [呼叫模式](#calling-pattern)
* [舊型顯示器上的 HDR 與 120Hz](#older-displays)
* [40fps](#forty-fps)
* [暫停與繼續](#suspend-and-resume)
* [相關範例](#relevant-samples)

<a id="overview" />

## 概觀

120Hz 提供超低延遲的遊戲體驗，是 XBOX 的新顯示技術。請注意，Gen9 XBOX 主機支援下列 120Hz 格式。

* 1920x1080p 120Hz
* 2560x1440p 120Hz
* 3840x2160p 120Hz

<a id="how-to-enable" />

## 如何啟用

若要啟用，請前往 \[設定] -> \[一般] -> \[電視與顯示選項]。您可以在該功能表中變更更新頻率 (選取：120Hz)。請確定您的電視已啟用正確的設定，請查閱電視手冊以找出該設定。請務必使用 XBOX Series X 開發套件隨附的 HDMI 2.1 Ultra-High-Speed 纜線 (4k 120Hz 所需)。另外，也請務必將電視更新為最新韌體，並將開發套件直接連接到電視。

<a id="recommended-displays" />

## 建議用於 120Hz 開發的顯示器

下列建議的電視支援 4K120Hz：

* LG C9 或 CX OLED 電視 (2019 或 2020 年款)
* Samsung Q900R(2019) 或 Q80T/Q90T(2020)

我們強烈建議使用上述其中一款電視，而不是顯示器。

<a id="display-supports" />

## 如何得知您的顯示器是否支援 120Hz

若要檢查您的電視是否支援 4K120Hz，請前往 \[設定] -> \[一般] -> \[電視與顯示選項] -> \[4K 電視詳細資料]。如果下列項目旁邊有綠色核取記號，表示您的電視支援 4K120Hz：

* 在 \[解析度] 下："Your TV setup support 4K UHD at 120Hz"
* 在 \[玩遊戲] 下："Your TV setup supports up to 4k native at 120fps"
  * 若為 XBOX Series X："Your TV setup supports up to 4k native at 120fps"
  * 若為 XBOX Series S：""Your TV setup supports up to 1440p native at 120fps"

若要確認已正確設定 120Hz，請執行[相關範例](#relevant-samples)。

<a id="calling-pattern" />

## 呼叫模式

下列程式碼必須依照此順序：

* [XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) \[僅支援 SDR 的遊戲請省略此步驟]
* [GetDisplayModeListX](/zh-TW/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist)
* [SetFrameIntervalX](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_setframeintervalx)
* [ScheduleFrameEventX](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_scheduleframeeventx)

首先呼叫 [IDXGIOutput:XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode)，嘗試啟用顯示器的 HDR 模式。如果顯示器不支援同時使用 HDR 和 120Hz 更新頻率，此函式可讓遊戲指定偏好其中之一。遊戲可以隨時再次呼叫此函式來變更偏好設定。請注意，這可能會變更 [IDXGIOutput:GetDisplayModeListX](/zh-TW/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist) 的結果，因此需要重新整理支援的畫面間隔。

第二步呼叫 [IDXGIOutput:GetDisplayModeListX](/zh-TW/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist)。此 API 專為想要檢查顯示器是否支援 120Hz 的遊戲所設計。它應呼叫兩次，第一次取得可用模式的數目，第二次取得模式的描述。

第三步呼叫 [ID3D12Device:SetFrameIntervalX](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_setframeintervalx)，以微秒為單位設定畫面間隔，並以間隔數目設定畫面週期，兩者共同決定從畫面開始到畫面呈現的持續時間。選取的畫面間隔必須受到顯示器支援，可使用 [IDXGIOutput:GetDisplayModeListX](/zh-TW/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist) 查詢。

<Note>
  在模式之間切換是一種干擾性的體驗，因為顯示器在與新的視訊格式同步時會黑畫面數秒。因此，遊戲必須留意在何時何處叫用模式變更。
</Note>

<a id="older-displays" />

## 舊型顯示器上的 HDR 與 120Hz

由於 HDMI 2.0 的限制，有些舊型顯示器支援 HDR 和 120Hz，但無法同時使用。[IDXGIOutput:XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) 有一個名為 [XDisplayHdrModePreference](/zh-TW/reference/system/xdisplay/enums/xdisplayhdrmodepreference) 的偏好參數，用於在不支援同時使用兩者的電視上，優先選擇 HDR 或最高 120Hz 的更佳畫面播放速率。請參閱 [XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) 以了解何時使用 PreferHdr 或 PreferRefreshRate。

範例：假設使用者的顯示器可以支援 4k60，以及較低解析度的 120Hz。它也支援 HDR，但無法與 120Hz 同時使用。當使用者進入 120Hz 體驗時，請以偏好參數 PreferRefreshRate 呼叫 [IDXGIOutput:XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode)，以不使用 HDR 的 1440p 120Hz 顯示。當使用者離開該體驗時，請以偏好參數 PreferHdr 呼叫 [IDXGIOutput:XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode)，這會開啟 HDR 並將顯示器還原為 4k60。

常見的消費者情境是：主機設定為類似 4K 60Hz HDR 的模式，遊戲啟動後，消費者發現遊戲可提供 120Hz，於是按下控制器上的 XBOX 按鈕前往設定，將主機設定變更為 120Hz，再返回遊戲。遊戲若能提供讓玩家快速前往主機電視設定的方式，可能會很有幫助。下列程式碼會直接帶您前往主機電視設定。

```cpp theme={null}
#include <XLauncher.h>

XLaunchUri(nullptr, "settings://videooutput");
```

<a id="forty-fps" />

## 40fps

如果顯示器支援 120Hz，遊戲也可以用 40fps 轉譯。在此情境中，系統會以 120Hz 間隔將同一個畫面傳送三次。對於無法完全維持 60fps、但能穩定以遠高於 30fps 轉譯的遊戲而言，這是個不錯的選擇。40fps 的顯示顯然比 30fps 更快，而且延遲也改善了 8.3ms。如果遊戲想要支援 40fps，建議在呼叫 [IDXGIOutput:XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) 時使用 [PreferRefreshRate](/zh-TW/reference/system/xdisplay/enums/xdisplayhdrmodepreference)。

<a id="suspend-and-resume" />

## 暫停與繼續

在上述常見的消費者情境中，視訊模式極有可能在遊戲暫停或受限時變更，因此遊戲必須正確處理該視訊模式變更。

暫停/繼續 API：RegisterAppStateChangeNotification 受限/不受限 API：RegisterAppConstrainedChangeNotification

[呼叫模式](#calling-pattern)中詳述的程式碼必須放在遊戲的 Resume 和 Unconstrain 函式中，而且必須依照該順序。

<a id="relevant-samples" />

## 相關範例

請依照 [Microsoft Game Development Kit 範例](/zh-TW/home/setup-install/samples)中的指示下載 GDK NDA 範例。Simple120Hz 範例示範以數種更新頻率轉譯的基本概念，ResponsivenessSample 則示範如何進行低延遲轉譯。

## 另請參閱

[ID3D12Device::SetFrameIntervalX](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/methods/id3d12device_setframeintervalx) [IDXGIOutput:XDisplayTryEnableHdrMode](/zh-TW/reference/system/xdisplay/functions/xdisplaytryenablehdrmode) [GetDisplayModeListX](/zh-TW/reference/graphics/d3d12_xs/interfaces/IDXGIOutput/methods/idxgioutput_getdisplaymodelist) [HDR 支援](/zh-TW/build/core-features/graphics/overviews/hdr-support) [圖形概觀](/zh-TW/build/core-features/graphics/overviews/graphics)


## Related topics

- [XDisplayTryEnableHdrMode](/reference/system/xdisplay/functions/xdisplaytryenablehdrmode.md)
- [XDisplayHdrModePreference](/ko/reference/system/xdisplay/enums/xdisplayhdrmodepreference.md)
- [GDKX로 첫 콘솔 타이틀 빌드 및 실행](/ko/home/build-first-title/first-console-title-walkthrough.md)
- [Gears of War: Reloaded case study](/build/game-principles/sustainability/case-studies/case-studies-gears-of-war-reloaded.md)
- [Caso práctico de Gears of War: Reloaded](/es/build/game-principles/sustainability/case-studies/case-studies-gears-of-war-reloaded.md)
