ディスプレイのリフレッシュレートを設定する
更新日時: 2026/01/22
ディスプレイリフレッシュレートは、ヘッドセットの画面が1秒間に更新される回数を表します。リフレッシュレートが高くなると、フレームレートが高くなるため、アウトプットがより鮮明になり、彩度が向上します。ただし、リフレッシュレートが高いほど、アプリにはより短い時間で処理を実行することが求められます。
アプリのデフォルトのディスプレイリフレッシュレートは72 Hzです。それ以外のリフレッシュレートでアプリを実行したい場合は、アプリがそのレートを維持するのに十分なパフォーマンスで動作するようにする必要があります。目的のディスプレイリフレッシュレートで一貫したレンダリングができないアプリは、Meta Horizonストアの審査で不合格になります。そのようなアプリでは、ジャダー(映像のカクつき)や周辺部のちらつく黒い領域、その他のパフォーマンスに関連する問題を引き起こす可能性があります。
デバイスでサポートされているリフレッシュレートを取得する
ヘッドセットモデルによっては、ほかよりも高いディスプレイリフレッシュレートを設定できるものもあります。現在設定可能なリフレッシュレートを以下の表に示しますが、常に目的のリフレッシュレートがユーザーのデバイスで有効であることをプログラムで確認してから、リフレッシュレートを設定するようにしてください。
| デバイスモデル | 60 Hz | 72 Hz | 80 Hz | 90 Hz | 96 Hz | 100 Hz | 120 Hz |
|---|
Quest | メディア アプリのみ | ✓ | - | - | - | - | - |
Quest 2 | メディア アプリのみ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Quest Pro | - | ✓ | ✓ | ✓ | - | - | - |
Quest 3 | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Quest 3S | - | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
60 Hzはメディアプレイヤーアプリでのみ使用できます。60 Hzは、30 FPSまたは60 FPSの動画をディスプレイリフレッシュレートと同期させて滑らかに再生する方法として提供されています。なお、メディアアプリではさらに高いリフレッシュレートを使用できます。ただし、リフレッシュレートがデバイスでサポートされていて、アプリのパフォーマンスが維持される範囲に限ります。メディアプレイヤー以外のアプリでディスプレイリフレッシュレートを60 Hzに設定すると、ストアの審査で不合格になります。
ヘッドセットの現在のリフレッシュレートを確認する方法
使用しているヘッドセットの現在のリフレッシュレートは、以下の手順でリアルタイムで確認できます。
- Meta Horizonモバイルアプリで開発者モードを有効にします。手順については、開発者モードを有効にするをご覧ください。
- Meta Quest開発者ハブのデスクトップで以下の操作を行います。
- OVR Metricsツールをインストールします。手順については、Meta Horizonストアをご覧ください。
- 設定の歯車アイコンを選択し、フレームレートを表示するようにMeta Quest開発者ハブのMetrics Performance HUD Settings (指標パフォーマンスHUD設定)を設定した後、Average FPS (平均FPS)の2つのボックスにチェックを入れます。
デバイスでサポートされているリフレッシュレートのリストを取得する方法
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関数を使ってリフレッシュレートの変更を確認できます。