概要
QualitySettings.vSyncCountが0以外(1or2)の場合、フレームレートがリフレッシュレートによって変動することを確認する。
お詫び
検証4のフレームレートの表記が60となっていましたが、正しくは90となります。
現在は修正済みです。
検証
検証端末:Pixel4XL
検証プロジェクト:Candy Rock Startに
UnityChoseKun(https://github.com/katsumasa/UnityChoseKun)及びUnityProfilerLiteKun( https://github.com/katsumasa/UnityProfilerLiteKun )を組み込んだカスタムバージョン。
検証内容
設定画面から90Hzリフレッシュレートの適用 を有効にしたケースとスムージングディスプレイを有効にしたケースでQualitySettings.vSyncCount とApplication.targetFrameRateの値を変更してどのような結果になるか検証を行う。
備考
全ての検証においてpreferredRefreshRate(https://docs.unity3d.com/ja/current/ScriptReference/Screen.SetResolution.html)に60や30といった0以外の値を設定した検証も同時に行ったが、結果に差異はなかった。
スムージングディスプレイと90Hzリフレッシュレートの適用 に関してはこちらの記事を参照。
検証1
90Hzリフレッシュレートの適用 ON
QualitySettings.vSyncCount = 1
Application.targetFrameRate = -1
結果
リフレッシュレート 90[Hz]
フレームレート90[FPS]
検証2
90Hzリフレッシュレートの適用 ON
QualitySettings.vSyncCount = 0
Application.targetFrameRate = -1
結果
リフレッシュレート 90[Hz]
フレームレート 30[Hz]
検証3
90Hzリフレッシュレートの適用 ON
QualitySettings.vSyncCount = 0
Application.targetFrameRate = 60
結果
リフレッシュレート 90[Hz]
フレームレート 60[Hz]
検証4
スムーズ ディスプレイ ON
QualitySettings.vSyncCount = 1
Application.targetFrameRate = -1
結果
リフレッシュレート 90[Hz]
フレームレート 90[Hz]
検証5
スムーズ ディスプレイ ON
QualitySettings.vSyncCount = 0
Application.targetFrameRate = -1
結果
リフレッシュレート 90[Hz]
フレームレート 30[Hz]
検証6
スムーズ ディスプレイ ON
QualitySettings.vSyncCount = 0
Application.targetFrameRate = 60
結果
リフレッシュレート 90[Hz]
フレームレート 60[Hz]
結論
- QualitySettings.vSyncCountが0以外の場合、フレームレートはVSYNCの発生間隔に依存する為、リフレッシュレートによってフレームレートも変動する。
- AndroidではpreferredRefreshRateを用いてリフレッシュレートを変更することは出来ない。
感想
フレームレートの設定方法として、
QualitySettings.vSyncCount及びApplication.targetFrameRateのいずれかで設定する方法はが一般的であるが、Androidではアプリ内からリフレッシュレートを制御する術が無い為、Application.targetFrameRateでフレームレートを制御する場合、スムーズ ディスプレイが有効になっていると、たとえ、30や60FPSでアプリを回していても、描画の書き換え自体は常に90Hzで実行される為、バッテリーの消耗という観点で言えばデメリットである。