0

我为此使用了两个计时器

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 毫秒周期 Windows 计时器的事件进行计数。请注意,1 毫秒对于 Window 计时器来说太短了,因为典型的 Windows 响应时间(不知道确切的英文单词)是 10-20 毫秒(65 个事件 =~ 15 毫秒)。因此,在 Windows 中,您可以高精度地测量时间间隔,但要保证事件触发的准确时间要困难得多。

要计算 FPS,您必须在精确测量的时间内计算所需的事件(阅读 QueryPerformanceCounter 函数等)。

于 2013-06-29T07:12:56.603 回答