1 ポイント 投稿者 GN⁺ 2025-08-16 | まだコメントはありません。 | WhatsAppで共有
  • MacBookでフルスクリーンゲームを実行すると、ほとんどのゲームでディスプレイのノッチの問題によりぼやけたレンダリングが発生する
  • システムの解像度選択メカニズムがノッチ領域を考慮しておらず、誤った出力領域の選択を引き起こす
  • 16:10の解像度を選ぶことが当面の回避策だが、根本原因はAppleのAPI設計とガイダンス不足にある
  • 代表的なゲーム(Shadow of the Tomb Raider、No Man’s Sky など)で問題を再現可能。一部の最新ゲーム(Cyberpunk 2077)は正常に処理する
  • AppleはHIGとAPIを更新し、開発者向けガイダンスとサポートを改善する必要がある

問題: Macのフルスクリーンゲームでぼやけたレンダリングが起きる原因

  • この問題は2023年9月からFB13375033としてAppleに報告されている
  • MacBookのディスプレイでゲームをフルスクリーン実行すると、多くのゲームがノッチ領域を適切に考慮できず、レンダリングエラーが発生する
  • 多くのゲームはシステムからサポート解像度の一覧を取得し、その先頭(ディスプレイ全体の解像度)を選ぶが、実際にAppKitで利用できるフルスクリーン領域はノッチの下に制限される
  • ゲームがディスプレイ全体の解像度で出力すると、実際に描画できる領域のほうが小さいため、フレームが縦方向に圧縮され、ぼかしの問題につながる

Macディスプレイの領域構造

  • ノッチ付きMacディスプレイには3つの主要な領域がある
    • ディスプレイ全体の境界(ノッチとメニューを含む)
    • Safe area(ノッチの下)
    • AppKitで利用可能なフルスクリーン領域(メニューバーの下)
  • CGDisplayCopyAllDisplayModes 関数が返す解像度一覧には、ディスプレイ全体の解像度と**メニューバー下の解像度(主に16:10比率)**が混在している
  • ほとんどのゲームは一覧の先頭項目(フルスクリーン領域)を使ってしまい、不正確な出力になる
  • 例: Shadow of the Tomb Raiderはデフォルトでディスプレイ全体の解像度(3456x2234)で起動するが、実際に描画できる領域は3456x2160である(74ピクセルの差により画面が圧縮され、ぼやけてレンダリングされる)

解決策: 正しい解像度の選択と暫定的な回避策

  • ユーザー: ノッチ付きMacディスプレイでフルスクリーンゲームを実行する際は、16:10の解像度を手動で選ぶことが重要(ゲーム側が自動で合わせない)
  • 開発者: NSScreensafeAreaInsets プロパティを使い、解像度一覧をより精密にフィルタリングする必要がある
    • Safe areaの基準に合う解像度だけを抽出するアルゴリズムをコードで提示している(4:3など一部の解像度を過剰に除外してしまう副作用あり)
    • 本質的にはApple側の改善が必要

影響を受けるゲーム: 代表例と対応状況

  • Shadow of the Tomb Raider、Control Ultimate Edition、No Man’s Sky、Riven、Stray などの多くで、誤ったデフォルト解像度により圧縮とぼやけたレンダリングが発生する
    • Control: 独自に解像度を設定するが、実際のMac解像度と一致しない
    • No Man’s Sky: 不適切な比率に加え、safe areaとnon-safe areaの両方の解像度を提示する
    • Riven、Stray: 圧縮された解像度でのレンダリングがデフォルトになっている
  • Cyberpunk 2077は16:10比率で正しい解像度を選択する(内部フィルタリング方式は非公開)
  • World of Warcraft: レガシーAPIによりノッチ部分まで描画できるため、フル解像度の適用が正常に機能する

Appleができること: Appleの対応が必要

  • HIG(Human Interface Guidelines)の文書に、ノッチ付きディスプレイに関する解像度処理とガイダンスの追記が必要
  • AppKit/Cocoaで解像度フィルタリングを簡単に行えるよう、CGDisplayMode の更新が求められる
  • ゲーム最適化専用の新しいAPI設計が必要(解像度リストとボイラープレートの問題を解消)
  • 開発者には、解像度問い合わせの代わりに独自の解像度一覧を算出するか、「レンダースケール」方式の利用を推奨することも考えられる
  • こうした改善を適用するなら、Appleの公式ドキュメントとサンプルコードの更新も併せて行う必要がある

まだコメントはありません。

まだコメントはありません。