Siv3D / OpenSiv3D

C++20 framework for creative coding 🎮🎨🎹 / Cross-platform support (Windows, macOS, Linux, and the Web)
https://siv3d.github.io/
MIT License
994 stars 136 forks source link

VSync無効時にフレームレートを制限する機能を追加 #1205

Open m4saka opened 6 months ago

m4saka commented 6 months ago

下記Issueについて実装しました。

https://github.com/Siv3D/OpenSiv3D/issues/1180

実装にあたって気になっている点は下記2点です。

  1. 目標フレームレート(fps引数)にゼロや負の値を指定した時に例外を投げているのは問題ないか?
  2. 目標フレームレート(fps引数)にNaNや+inf、-infを指定した場合も例外を投げるべきか? 補足事項として、Qiita記事での実装ではMaxDrift(=10ミリ秒)という定数値を導入していましたが、now < sleepUntilの場合のみsleepを実行することで不要になったので、今回の実装には入っていません。

手元では現状Windows版のみで動作確認しているので、macOS版、Linux版、Web版でも正常動作するかどうかは今後確認予定です。 (Xcodeプロジェクトへのソースファイル追加についても現状は未対応です)

下記の残作業が完了したらDraft PR→PRに変更予定です。