PC で高 DPI ディスプレイをサポートする

Windows 10 のアプリケーションとシェルの要素が、さまざまなピクセル密度のモニターで統一されたサイズで表示されるように、Windows には拡大縮小の設定機能が組み込まれています。 この拡大縮小の設定を行っている際に、タイトルでレンダリングおよびマウス入力が正しく処理されるようにするには、既定の DPI 認識を設定する必要があります。 これを行わないと、タイトルで表示が正しく行われず、高 DPI ディスプレイを使用するユーザーがタイトルを使用できなくなる可能性があります。

高 DPI 認識を有効にする

タイトルを高 DPI ディスプレイ対応させるには

  1. ゲームの実行可能ファイルのアセンブリ マニフェスト XML を確認します。 これは titleName.exe、titleName.exe に並列するマニフェスト ファイル、あるいはゲームの実行可能ファイルに埋め込まれたマニフェストになります。 sigcheck を使用して、コマンドライン経由でゲームの実行可能ファイルから埋め込みのマニフェストを抽出できます (次を参照)。
    sigcheck -m titleName.exe
    
  2. マニフェスト XML 内に次の <dpiAware> タグしか表示されない場合、高 DPI ディスプレイはサポートされていません。
    <windowsSettings>
        <dpiAware>
            true
        </dpiAware>
    </windowsSettings>
    
  3. 埋め込まれたマニフェストは、分離したマニフェストよりも優先されます。 存在する場合は、手順 4 に進みます。 埋め込みマニフェストがない場合は、次のコンテンツを含む titleName.exe.manifest ファイルを作成します。
    <?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 ツールを使用して、コマンドラインでマニフェストを検索します。
    mt -inputresource:<titleExeFilename> -out:<manifestOutputFilename>
    
  5. 埋め込みマニフェストを編集して、新しい <dpiAwareness> タグを追加します (次を参照)。
    <windowsSettings>
        <dpiAwareness xmlns="https://schemas.microsoft.com/SMT/2016/WindowsSettings">
            PerMonitorV2
        </dpiAwareness>
    </windowsSettings>
    
  6. 次の Windows SDK の Mt.exe ツールを使用して、コマンドラインで埋め込みマニフェストを更新します。
    mt -updateresource:<titleExeFilename> -manifest <manifestFilename>
    

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

高 DPI 認識の検証

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

  1. 高 DPI ディスプレイの PC (Surface Studio 2 など) を使用して、[Windows の設定]>[ディスプレイ] の順に移動し、拡大縮小の設定を 150% にします。
  2. タイトルを起動します。
  3. カーソルが表示されている画面で、タイトルが正常に表示されるかどうかを確認します。 たとえば、全画面表示のタイトルは画面全体に表示されるはずです。
  4. 画面上でカーソルを動かし、タイトルのウィンドウの画面全体でカーソルを動かせるかどうかを確認します。
  5. 対話型 UI 要素 (ボタンなど) にカーソルを合わせ、表示状態と対話の操作が正常に機能することを確認します。 たとえば、直接ボタンの上にカーソルを置くと、ボタンの表示状態が変化します。カーソルがボタンの隣にあるだけでは、表示状態は変わりません。

注意事項

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

関連項目

プロセスの既定の DPI 認識を設定する