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

# PC での高 DPI ディスプレイのサポート

> アセンブリ マニフェストを使用して PC タイトルで Per-Monitor V2 の DPI 認識を有効にし、高 DPI の Windows ディスプレイでレンダリングとマウス入力が正しく動作するようにします。

ピクセル密度が異なるモニターで Windows 10 アプリケーションとシェル要素が一貫したサイズで表示されるように、Windows にはスケーリング設定が組み込まれています。これらのスケーリング設定が調整されている場合でもタイトルがレンダリングとマウス入力を正しく処理できるように、既定の DPI 認識を設定してください。これを行わないと、タイトルが正しく表示されず、高 DPI ディスプレイを使用しているプレイヤーがタイトルを使用できなくなる可能性があります。

## 高 DPI 認識を有効にする

#### タイトルが高 DPI ディスプレイをサポートするようにするには

1. ゲーム実行可能ファイルのアセンブリ マニフェスト XML を確認します。これは、titleName.exe、titleName.exe と同じ場所にあるマニフェスト ファイル、またはゲーム実行可能ファイルに埋め込まれたマニフェストのいずれかです。埋め込みマニフェストは、[sigcheck](https://learn.microsoft.com/sysinternals/downloads/sigcheck) を使用して、コマンド ラインからゲーム実行可能ファイルから抽出できます (次を参照)。
   ```cpp theme={null}
   sigcheck -m titleName.exe
   ```
2. マニフェスト XML に次の `<dpiAware>` タグのみが含まれている場合、高 DPI ディスプレイはサポートされていません。
   ```cpp theme={null}
   <windowsSettings>
       <dpiAware>
           true
       </dpiAware>
   </windowsSettings>
   ```
3. 埋め込みマニフェストは、ルーズ マニフェストよりも優先されます。埋め込みマニフェストが存在する場合は、手順 4 に進みます。埋め込みマニフェストがない場合は、次の内容を含む titleName.exe.manifest ファイルを作成します。
   ```cpp theme={null}
   <?xml version="1.0" encoding="UTF-8" standlone="yes"?>
   <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <application xmlns="urn:schemas-microsoft-com:asm.v3">
       <windowsSettings>
           <dpiAwareness xmlns="https://schemas.microsoft.com/SMT/2016/WindowsSettings">
               PerMonitorV2
           </dpiAwareness>
       </windowsSettings>
   </application>
   </assembly>
   ```
4. 埋め込みマニフェストがある場合は、Windows SDK の次の [Mt.exe](https://learn.microsoft.com/windows/win32/sbscs/mt-exe) ツールを使用して、コマンド ラインからマニフェストを特定します。
   ```cpp theme={null}
   mt -inputresource:<titleExeFilename> -out:<manifestOutputFilename>
   ```
5. 埋め込みマニフェストを編集して、新しい `<dpiAwareness>` タグを追加します (次を参照)。
   ```cpp theme={null}
   <windowsSettings>
       <dpiAwareness xmlns="https://schemas.microsoft.com/SMT/2016/WindowsSettings">
           PerMonitorV2
       </dpiAwareness>
   </windowsSettings>
   ```
6. Windows SDK の次の [Mt.exe](https://learn.microsoft.com/windows/win32/sbscs/mt-exe) ツールを使用して、コマンド ラインから埋め込みマニフェストを更新します。
   ```cpp theme={null}
   mt -updateresource:<titleExeFilename> -manifest <manifestFilename>
   ```

これで、タイトルが高 DPI ディスプレイをサポートするようになりました。

## 高 DPI 認識を検証する

#### タイトルが高 DPI ディスプレイをサポートしていることを確認するには

1. Surface Studio 2 などの高 DPI ディスプレイを備えた PC で、**設定** > **ディスプレイ** に移動し、スケーリングを **150%** に設定します。
2. タイトルを起動します。
3. カーソルが表示される画面を調べ、タイトルが期待どおりに表示されることを確認します。たとえば、全画面表示のタイトルは画面全体を占める必要があります。
4. 画面上でカーソルを移動し、タイトル ウィンドウの表示領域全体にカーソルが届くことを確認します。
5. 対話型の UI 要素 (ボタンなど) にカーソルを合わせ、表示状態と操作が期待どおりに動作することを確認します。たとえば、ボタンは、カーソルが隣接しているときではなく、カーソルがボタンの真上にあるときに表示状態が変わる必要があります。

## メモ

* 高 DPI 認識の問題の解決策として、レジストリ仮想化を無効にすることが提案される場合がありますが、お勧めしません。
* Visual Studio の構成プロパティには DPI 認識のオプションがありますが、これは古い `<dpiAware>` タグを使用するため、MSIXVC でパッケージ化されたタイトルでは機能しません。

## 関連項目

[プロセスの既定の DPI 認識の設定](https://learn.microsoft.com/previous-versions/windows/desktop/legacy/mt846517\(v=vs.85\))


## Related topics

- [Handheld Compatibility ガイドラインとテスト ケース](https://docs.xbox.com/ja-jp/build/gdk-and-engines/handheld/handheld-guidelines-and-testcases.md)
- [Xbox が設計した Handheld Compatibility プログラムのガイドライン](https://docs.xbox.com/ja-jp/build/gdk-and-engines/handheld/handheld-guidance.md)
- [/ext/unattendedsetup/quickaction (API の内容)](https://docs.xbox.com/ja-jp/reference/deviceportal/unattendedsetup/uri-extunattendedsetupquickaction.md)
- [PlayFab Multiplayer Unity プラグインの概要](https://docs.xbox.com/ja-jp/services/playfab/multiplayer/lobby/lobby-matchmaking-sdks/multiplayer-unity-overview.md)
- [XFrontPanelGetScreenDimensions](https://docs.xbox.com/ja-jp/reference/devkit/xfrontpaneldisplay/functions/xfrontpanelgetscreendimensions.md)
