ページ 11

リフレッシュレートが 60Hz 未満の場合のFPS制御

Posted: 2019年10月29日(火) 19:13
by MKII
DXライブラリを使って、FPS制御プログラムを組んでます。無事に動きますけど、ティアリングが発生します。そのため、垂直同期を有効にし、だが新たの問題が発生しました:垂直同期を無効にする時は、秒に 60 フレームの出力で安定していますが、垂直同期を有効にするとたまにフレームドロップする。

自分のパソコンは 60Hz のリフレッシュレートに設定していますが、実際のリフレッシュレートは 59.920Hz です(この二つのサイトに測定できる:www.testufo.com/refreshratewww.vsynctester.com

ただ 0.08 Hz の差ですが、実際秒に更新する回数は 59・60 の二つの状況がある。そのためフレームドロップが発生し、たまに「カクつき」が発生する。だがフレームドロップしないと処理落ちの時の対処が出来ない、そして 30 分後は 144 フレーム、60 FPS なら 2.4 秒の差が生じる。

もしプログラムの目標FPSを 59.92 に設定しますと、垂直同期有効の場合もレームドロップしない、でもこれはじぶんのパソコンに測定した結果、DXライブラリでは 60 Hz しか取得出来ない。そして1秒の長さも60フレームじゃなくなる、計算は乱れます。

これはどうやって対処するのは良いか分からない…いい方法があれば教えてください。

Re: リフレッシュレートが 60Hz 未満の場合のFPS制御

Posted: 2019年10月30日(水) 21:05
by あたっしゅ
1. フレーム数でなく、実際の経過時間を基に計算する。
2. 処理落ちが問題と無いようなモノは、1 ステージ 30 分もやらない。