プロジェクト

全般

プロフィール

機能 #153

完了

VIDEO設定: VSync詳細設定の追加

機能 #153: VIDEO設定: VSync詳細設定の追加

エージェント ちゃん さんが27日前に追加. 22日前に更新.

ステータス:
完了
優先度:
高め
担当者:
対象バージョン:
開始日:
2026/06/09
期日:
進捗率:

100%

予定工数:

説明

#143 から分割。

概要

現在のVSync ON/OFFを選択式に拡張する。

想定UI

  • Off
  • On
  • Adaptive
  • Driver controlled

目的

  • ティアリングを抑える
  • 環境ごとに遅延と見た目のバランスを調整できるようにする

実装前に確認すること

Adaptive / Driver controlled をlibGDX/LWJGL/GLFWでどこまで制御できるか確認する。制御できない項目はUIに出さない、または明確に仕様を分ける。


関連するチケット 1 (0件未完了1件完了)

関連している beatoraja - 機能 #143: ディスプレイ設定機能の改善完了いづ さん2026/06/09

操作

いづ さん さんが27日前に更新 操作 #1

  • 関連している 機能 #143: ディスプレイ設定機能の改善 を追加

エージェント ちゃん さんが27日前に更新 操作 #2

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

作業開始します。

まずLWJGL3/GLFWで Off / On / Adaptive / Driver controlled をどこまで直接制御できるか確認し、制御不能な項目は挙動を明確にして実装します。

エージェント ちゃん さんが27日前に更新 操作 #3

  • ステータス実装中 から テスト中 に変更
  • 進捗率10 から 50 に変更

実装しました。実機確認待ちとしてテスト中にします。

実装内容

  • VIDEO設定のVSyncをチェックボックスから選択式に変更しました。
  • 選択肢は以下に対応しました。
    • Off
    • On
    • Adaptive
    • Driver controlled
  • vsyncModeconfig_sys.json に保存するよう追加しました。
  • 既存設定互換として、vsyncMode が未設定の場合は既存の vsync boolean から On / Off を推定します。
  • 互換用の vsync boolean は残し、On / Adaptive の場合は trueOff / Driver controlled の場合は false に同期します。
  • 起動時の反映を更新しました。
    • On: libGDXの既存 useVsync(true) を使用
    • Off: GLFW glfwSwapInterval(0) を明示
    • Adaptive: GLFW glfwSwapInterval(-1) を使用
    • Driver controlled: アプリ側はVSyncを有効化せず、ドライバ側の上書きを許容する扱い
  • 起動ログにVSyncモードを出力するよう更新しました。

注意点

Adaptive VSyncはGLFWの glfwSwapInterval(-1) を使います。環境/ドライバが対応していない場合は期待通りに動かない可能性があります。

検証

  • ./gradlew.bat test --tests bms.player.beatoraja.ConfigFileCompatibilityTest --tests bms.player.beatoraja.launcher.LauncherFxmlLoadSmokeTest 成功
  • ./gradlew.bat test 成功

エージェント ちゃん さんが27日前に更新 操作 #4

  • ステータステスト中 から 完了 に変更
  • 進捗率50 から 100 に変更

実機確認OKのため、チケットを完了にします。

実装サマリー

  • VIDEO設定のVSyncをチェックボックスから選択式に変更しました。
  • 選択肢は Off / On / Adaptive / Driver controlled に対応しました。
  • vsyncModeconfig_sys.json に保存するよう追加しました。
  • 既存設定互換として、vsyncMode が未設定の場合は既存の vsync boolean から On / Off を推定します。
  • 互換用の vsync boolean は残し、On / Adaptive の場合は trueOff / Driver controlled の場合は false に同期します。
  • 起動時の反映を更新しました。
    • On: libGDXの既存 useVsync(true) を使用
    • Off: GLFW glfwSwapInterval(0) を明示
    • Adaptive: GLFW glfwSwapInterval(-1) を使用
    • Driver controlled: アプリ側はVSyncを有効化せず、ドライバ側の上書きを許容する扱い
  • 起動ログにVSyncモードを出力するよう更新しました。

検証

  • ./gradlew.bat test --tests bms.player.beatoraja.ConfigFileCompatibilityTest --tests bms.player.beatoraja.launcher.LauncherFxmlLoadSmokeTest 成功
  • ./gradlew.bat test 成功
  • 実機確認OK

Commit

  • 69992c59 refs#153 Add detailed VSync modes

いづ さん さんが22日前に更新 操作 #5

  • 対象バージョン1.0.0 にセット

他の形式にエクスポート: PDF Atom