開発

ディスプレイのリフレッシュレートを設定する

更新日時: 2026/08/27
ディスプレイリフレッシュレートは、ヘッドセットの画面が1秒間に更新される回数を表します。リフレッシュレートが高くなると、フレームレートが高くなるため、アウトプットがより鮮明になり、彩度が向上します。ただし、リフレッシュレートが高いほど、アプリにはより短い時間で処理を実行することが求められます。
アプリのデフォルトのディスプレイリフレッシュレートは72 Hzです。それ以外のリフレッシュレートでアプリを実行したい場合は、アプリがそのレートを維持するのに十分なパフォーマンスで動作するようにする必要があります。目的のディスプレイリフレッシュレートで一貫したレンダリングができないアプリは、Meta Horizonストアの審査で不合格になります。そのようなアプリでは、ジャダー(映像のカクつき)や周辺部のちらつく黒い領域、その他のパフォーマンスに関連する問題を引き起こす可能性があります。

デバイスでサポートされているリフレッシュレートを取得する

ヘッドセットモデルによっては、ほかよりも高いディスプレイリフレッシュレートを設定できるものもあります。以下の表に、現在主に利用可能なリフレッシュレートを示します。
デバイスモデル60 Hz72 Hz80 Hz90 Hz96 Hz100 Hz120 Hz
Quest
メディア
アプリのみ
✓
-
-
-
-
-
Quest 2
メディア
アプリのみ
✓
✓
✓
✓
✓
✓
Quest Pro
-
✓
✓
✓
-
-
-
Quest 3
-
✓
✓
✓
✓
✓
✓
Quest 3S
-
✓
✓
✓
✓
✓
✓
60 Hzはメディアプレイヤーアプリでのみ使用できます。60 Hzは、30 FPSまたは60 FPSの動画をディスプレイリフレッシュレートと同期させて滑らかに再生する方法として提供されています。なお、メディアアプリではさらに高いリフレッシュレートを使用できます。ただし、リフレッシュレートがデバイスでサポートされていて、アプリのパフォーマンスが維持される範囲に限ります。メディアプレイヤー以外のアプリでディスプレイリフレッシュレートを60 Hzに設定すると、ストアの審査で不合格になります。
ヘッドセットの現在のリフレッシュレートを確認する方法
  1. Meta Horizonモバイルアプリで開発者モードを有効にします。手順については、開発者モードを有効にするをご覧ください。
  2. Meta Quest開発者ハブのデスクトップで以下の操作を行います。
    • OVR Metricsツールをインストールします。手順については、Meta Horizonストア⁠をご覧ください。
    • 設定の歯車アイコンを選択し、フレームレートを表示するようにMeta Quest開発者ハブのMetrics Performance HUD Settings (指標パフォーマンスHUD設定)を設定した後、Average FPS (平均FPS)の2つのボックスにチェックを入れます。
デバイスでサポートされているリフレッシュレートのリストを取得する方法:
注: 以下のAPIを使ってリフレッシュレートのリストを取得できますが、このAPIは廃止されています。サポートされているデバイスでは、このAPIが返さない値をリクエストすることができます。例えば、Quest 2、Quest Pro、Quest 3、Quest 3Sはすべて76 Hzをサポートしています。将来のヘッドセットとの互換性を最大限に高めるには、上の表に記載されているリフレッシュレートを使用してください。
サポートされているリフレッシュレートを表示するには、XR_FB_display_refresh_rate⁠拡張機能を有効にする必要があります。例:
uint32_t rateCount = 0;
CHECK_XR(xrEnumerateDisplayRefreshRatesFB(session, 0, &rateCount, nullptr));

std::vector<float> rates(rateCount, 0.0f);CHECK_XR(xrEnumerateDisplayRefreshRatesFB(session, rateCount, &rateCount, rates));

リフレッシュレートを設定する

アプリで72 Hz以外のリフレッシュレートを設定したい場合は、XR_FB_display_refresh_rate拡張機能を有効にする必要があります。例:
float desiredRate = 90.0f;  // or whichever rate you wish to set
CHECK_XR(xrRequestDisplayRefreshRateFB(session, desiredRate));

リフレッシュレートの変更に関する留意点

72 Hzより高いディスプレイリフレッシュレートが設定されたアプリで過熱イベントが発生すると、動的スロットリングの最初のステップとして、リフレッシュレートが72 Hzに下がることがあります。過熱状況が悪化すると、動的スロットリングの追加のステップが実行され、リフレッシュレートを維持しつつフレームレートが変更されることがあります(minVsyncs=2に相当)。

リフレッシュレート変更イベントを処理する(任意)

動的スロットリングによってリフレッシュレートが低下していることをアプリに知らせて、何らかの方法で応答できるようにする必要がある場合は、xrWaitFrameにあるXrFrameStateのpredictedDisplayTimeフィールドからこの情報を取得することができます。詳しくは、OpenXRガイドのFrame Submission (フレーム送信)⁠をご覧ください。

アプリが動的スロットリングを処理する方法をテストする

より高いディスプレイリフレッシュレートにおける動的スロットリングをシミュレートできます。アプリの実行中に、adbシェルのアクティビティマネージャを使用して、インテントをブロードキャストします。例えば、次のコマンドは10秒間のスロットリングをシミュレートします。
adb shell am broadcast -a com.oculus.vrruntimeservice.COMPOSITOR_SIMULATE_THERMAL --es subsystem refresh --ei seconds_throttled 10
目に見える変化がアプリに見られない場合は、xrGetDisplayRefreshRateFB関数を使ってリフレッシュレートの変更を確認できます。

Meta Quest 3のリフレッシュレートの拡張

Meta Quest 3は、120 Hzを超えるディスプレイリフレッシュレート(最大240 Hz)をサポートしています。これはMeta Quest 3に固有の機能です。Meta Quest 3Sおよびその他のヘッドセットでは利用できません。Meta Quest 3Sでは、120 Hzより高いレートをサポートしない別のディスプレイパネルが使われています。
拡張リフレッシュレートを使用するには、HorizonOS v2.7以降が必要です。
拡張リフレッシュレートは、Meta Quest 3に搭載されているディスプレイハードウェアによって異なります。将来のヘッドセットが120 Hzより高いレートをサポートすることを想定しないようにし、拡張レートをアプリ実行の必須条件にしないようにしてください。拡張レートのリクエストに失敗した場合、デバイスが報告するリストにあるレートにフォールバックします。

最大207 Hz (標準)

Meta Quest 3では、ディスプレイハードウェアは72 Hzから207 Hzまでの任意の整数値のリフレッシュレートに対応しており、前述の標準APIを使ってどれでもリクエストできます。追加の設定は不要です。207 Hzは、システムがフル解像度でデータのフルフレームをディスプレイに配信できる最大レートです。

最大240 Hz (開発者モード)

207 Hzを超えるリフレッシュレートの場合、フル解像度のフレームがディスプレイへの転送に利用可能な帯域幅を超えるため、表示スケーリングが必要になります。開発者モードを有効にしてから、次の両方のコマンドを実行します。
adb shell setprop debug.oculus.forceDisplayScaling 1
adb shell setprop debug.oculus.refreshRate 240
最初のコマンドは、表示スケーリングを有効にします。フレームは低解像度でレンダリングされ、より小さなペイロードとしてディスプレイに送られ、ディスプレイハードウェアによってパネルのネイティブ解像度にアップスケールされます。小さなペイロードは、240 Hzで利用可能な帯域幅に収まります。
2番目のコマンドはターゲットのリフレッシュレートを設定します。72から240までの整数を指定できます。
表示スケーリングでは、画質と引き換えに必要な帯域幅を抑えます。アップスケールされた画像は、ネイティブでレンダリングされたフル解像度の画像と同一ではありません。違いは、小さいテキストや細いジオメトリなどの細部に現れます。
両方のプロパティをリセットしてデフォルトの動作に戻すには、次のようにします。
adb shell setprop debug.oculus.forceDisplayScaling ''
adb shell setprop debug.oculus.refreshRate ''

拡張リフレッシュレートにおけるモーションブラー

拡張リフレッシュレートでは、知覚されるモーションブラーが変化します。各フレームの表示時間が短くなるため、長時間フレームで動く物体を追跡することによる不鮮明さが軽減されます。この変化は、明るいオブジェクトが暗い背景を横切って移動する場合など、コントラストの高い場面で最も顕著に現れます。コンテンツを実際に配信するときのレートでモーションをテストしてください。結果はシーンのコントラストやモーションの速度に応じて異なってくるからです。

リフレッシュレートの拡張に関するパフォーマンス上の考慮事項

リフレッシュレートが高くなるほど、アプリが各フレームを生成する時間は短くなります。各レートのフレームバジェットは次のとおりです。
リフレッシュレートフレームバジェット
72 Hz
13.9ミリ秒
90 Hz
11.1ミリ秒
120 Hz
8.3ミリ秒
207 Hz
4.8ミリ秒
240 Hz
4.2ミリ秒
240 Hzでは、アプリのフレームバジェットは72 Hzの場合の3分の1未満になります。この予算に達しないアプリはジッターが発生し、レートを上げた意味がなくなってしまいます。延長されたリフレッシュレートは、ライトシーンをレンダリングするアプリに適しており、低遅延とスムーズなモーションが求められるリズムゲーム、対戦型シューティングゲーム、スポーツやレーシングタイトル、シンプルなハイコントラスト環境などで活用できます。シーンが密集しているアプリ、後処理が多くかかるアプリ、ドローコールの数が多いアプリは適していません。
動的スロットリングは、72 Hzを超える場合と同じように、拡張レートで適用されます。