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

# XDisplayTryEnableHdrMode

> XDisplayTryEnableHdrMode

# XDisplayTryEnableHdrMode

接続されたディスプレイで HDR (ハイ ダイナミック レンジ) モードを有効にしようとします。

## Syntax

```cpp theme={null}
XDisplayHdrModeResult XDisplayTryEnableHdrMode(  
         XDisplayHdrModePreference displayModePreference,  
         XDisplayHdrModeInfo* displayHdrModeInfo  
)  
```

### Parameters

*displayModePreference*   \_In\_\
型: [XDisplayHdrModePreference](/reference/system/xdisplay/enums/xdisplayhdrmodepreference)

接続された TV が両方をサポートしていない場合に、HDR または最大 120Hz までの改善されたフレームレートのいずれかを優先するために使用される列挙型。

*displayHdrModeInfo*   \_Out\_opt\_\
型: [XDisplayHdrModeInfo\*](/reference/system/xdisplay/structs/xdisplayhdrmodeinfo)

HDR モードが有効になっている場合、接続されたディスプレイの最小および最大トーン マップ輝度値。

### Return value

型: [XDisplayHdrModeResult](/reference/system/xdisplay/enums/xdisplayhdrmoderesult)

関数が成功した場合、戻り値は HDR モードが有効な場合は **XDisplayHdrModeResult::Enabled** に、HDR モードが有効でない場合は **XDisplayHdrModeResult::Disabled** に設定されます。関数が失敗した場合、戻り値は **XDisplayHdrModeResult::Unknown** に設定されます。

## Remarks

<Note>この関数は、タイム センシティブ スレッドから呼び出しても安全ではありません。詳細については、[Time-sensitive threads](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads) を参照してください。</Note>

*displayModePreference* パラメーターは、両方を同時にサポートしていない TV に対して、HDR *または* 120Hz のリフレッシュ レートのいずれかを優先する手段を提供します。

以下の例では、開発者が現在のタイトルで HDR モードを有効にしようとし、より高いフレームレートよりも HDR を優先するように指定します (両方を同時に達成できない場合)。

```cpp theme={null}
const XDisplayHdrModeResult result = XDisplayTryEnableHdrMode( 
    XDisplayHdrModePreference::PreferHdr, 
    &displayModeHdrInfo); 

switch (result) 
{ 
  case XDisplayHdrModeResult::Unknown: 
    // HDR is currently in an unknown state. 
    break; 
  case XDisplayHdrModeResult::Enabled: 
    // HDR is currently enabled. 
    break; 
  case XDisplayHdrModeResult::Disabled: 
    // HDR is currently disabled. 
    break; 
}
```

タイトルは、次の場合に [XDisplayHdrModePreference::PreferHdr](/reference/system/xdisplay/enums/xdisplayhdrmodepreference) を使用する必要があります:

* タイトルが HDR のみを実装しており、120hz をまったくサポートしていない場合。
* エンド ユーザーが 120Hz のリフレッシュ レートを望まないことをゲーム内設定で指定したか、パフォーマンスよりも品質を優先するなど、HDR を優先する場合。
* タイトルが 120Hz のリフレッシュ レートをサポートしていないゲーム モードにある場合。

タイトルは、次の場合に [XDisplayHdrModePreference::PreferRefreshRate](/reference/system/xdisplay/enums/xdisplayhdrmodepreference) を使用する必要があります:

* 120hz をサポートしており、開発者またはエンド ユーザーが、現在のシナリオではそれが優先されることを示している場合 (例: ゲーム内設定またはゲーム モードで **パフォーマンスを優先** を設定する)。

次の場合は、異なる優先設定で **XDisplayTryEnableHdrMode** を再度呼び出します:

* 優先設定に影響を与える何かが変化した場合。最もあり得るケースは、ユーザーがゲーム内設定を **品質を優先** から **パフォーマンスを優先** に変更した場合です。

<Note>**XDisplayTryEnableHdrMode** を呼び出してフレームごとに切り替えないでください。特定の理由がある場合にのみ変更してください。</Note>

**XDisplayTryEnableHdrMode** を呼び出した後、[IDXGIOutput::GetDisplayModeList](https://learn.microsoft.com/windows/win32/api/dxgi/nf-dxgi-idxgioutput-getdisplaymodelist) を呼び出して 120Hz のサポートを確認します。

**XDisplayTryEnableHdrMode** 関数は、接続されたディスプレイで HDR モードを有効にできるかどうかを示す **XDisplayHdrModeResult** 列挙値を返します。**XDisplayHdrModeResult::Enabled** が返される場合、関数は HDR モードの最小および最大トーン マップ輝度値を含む、ディスプレイの HDR モードに関する情報を含む [XDisplayHdrModeInfo](/reference/system/xdisplay/structs/xdisplayhdrmodeinfo) 構造体も提供します。既定では、HDR モードが有効な場合、**XDisplayTryEnableHdrMode** 関数は **XDisplayHdrModeInfo** のメンバーに対して次の値を返します:

| メンバー                         | 値    |
| ---------------------------- | ---- |
| minToneMapLuminance          | 0.01 |
| maxToneMapLuminance          | 1000 |
| maxFullFrameToneMapLuminance | 1000 |

HDR 輝度値とトーン マッピングの詳細については、[HDR Gaming Interest Group](https://www.hgig.org/) ウェブサイトにある [For a Better HDR Gaming Experience](https://www.hgig.org/doc/ForBetterHDRGaming.pdf) プレゼンテーションを参照してください。

次の例は、接続されたディスプレイで HDR モードを有効にしようとします。[XDisplayHdrModeInfo::Enabled](/reference/system/xdisplay/enums/xdisplayhdrmoderesult) が返された場合、そのディスプレイでは HDR モードが有効になっており、ゲームは返された [XDisplayHdrModeInfo](/reference/system/xdisplay/structs/xdisplayhdrmodeinfo) 構造体の輝度値を使用して HDR モードで初期化します。それ以外の場合、HDR モードは利用できないか、無効になっており、ゲームは SDR (標準ダイナミック レンジ) モードで初期化されます。

```cpp theme={null}
void Game::InitializeHDRMode() 
{
    // Attempt to enable HDR mode, then initialize based on the 
    // result of the attempt.
    XDisplayHdrModeInfo displayModeHdrInfo;

    if (XDisplayHdrModeResult::Enabled == XDisplayTryEnableHdrMode(XDisplayHdrModePreference::PreferHdr, &displayModeHdrInfo))
    {
        // HDR mode is enabled for the attached display.
        InitializeAsHDR(
            displayModeHdrInfo.minToneMapLuminance,
            displayModeHdrInfo.maxToneMapLuminance,
            displayModeHdrInfo.maxFullFrameToneMapLuminance);
    }
    else
    {
        // Either HDR mode is disabled for the attached display, or the
        // attached display does not support HDR.
        InitializeAsSDR();
    }
}
```

HDR サポートの詳細については、[High dynamic range (HDR) output (NDA topic)](/build/core-features/graphics/overviews/hdr-support) を参照してください。

## Requirements

**ヘッダー:** XDisplay.h

**ライブラリ:** xgameruntime.lib

**サポートされているプラットフォーム:** XBOX One ファミリー本体および XBOX Series 本体

## Conceptual documentation

* [Time-sensitive threads](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## See also

[XDisplayHdrModePreference](/reference/system/xdisplay/enums/xdisplayhdrmodepreference)\
[XDisplayHdrModeInfo](/reference/system/xdisplay/structs/xdisplayhdrmodeinfo)\
[XDisplayHdrModeResult](/reference/system/xdisplay/enums/xdisplayhdrmoderesult)\
[XDisplay](/reference/system/xdisplay/xdisplay_members)


## Related topics

- [XDisplayHdrModeInfo](/ja-jp/reference/system/xdisplay/structs/xdisplayhdrmodeinfo.md)
- [XDisplayHdrModeResult](/ja-jp/reference/system/xdisplay/enums/xdisplayhdrmoderesult.md)
- [XDisplayHdrModePreference](/ja-jp/reference/system/xdisplay/enums/xdisplayhdrmodepreference.md)
- [XDisplay](/ja-jp/reference/system/xdisplay/xdisplay_members.md)
- [XBOX 認定の概要](/ja-jp/publishing/certification/overview.md)
