0

そのために2つのタイマーを使用しています

Timer1.Interval = 1;
Timer2.Interval = 1000;

var
FPS: Integer = 0;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Inc(FPS);
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  Caption := IntToStr(FPS) + 'FPS';
  FPS := 0;
end;

私は65 FPSを取得しています。

それはどのくらい正確ですか?また、FPS(フレーム/秒)を計算する最も正しい/正確な方法は何ですか?

4

1 に答える 1

2

ここでは FPS を計算しません。このコードは、1 秒あたり 1 ミリ秒の Windows タイマーのイベントをカウントします。通常の Windows 応答時間 (正確な英語の単語がわからない) は 10 ~ 20 ミリ秒 (65 イベント =~ 15 ミリ秒) であるため、1 ミリ秒はウィンドウ タイマーには短すぎることに注意してください。そのため、Windows では時間間隔を正確に測定できますが、イベント トリガーの正確な時間を保証することははるかに困難です。

FPS を計算するには、正確に測定された時間内に必要なイベントをカウントする必要があります (QueryPerformanceCounter 関数などについてお読みください)。

于 2013-06-29T07:12:56.603 に答える