2Pascal-新时代的Pascal

 找回密码
 立即注册
搜索
热搜: fastreport
查看: 961|回复: 3
打印 上一主题 下一主题

[分享] 计算 FPS 范例

[复制链接]

2

主题

13

帖子

117

积分

注册会员

Rank: 2

积分
117
跳转到指定楼层
楼主
发表于 2015-6-18 09:40:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
京东购书支持本站
[mw_shl_code=delphi,true]var
    FTimerService: IFMXTimerService;
    FFrameCount: Integer;
    FFPS, FRenderTime, FBeginTime, FEndTime: Extended;

procedure TForm1.FormCreate(Sender: TObject);
begin
     if FTimerService = nil then
        if not TPlatformServices.Current.SupportsPlatformService(IFMXTimerService, FTimerService) then
           raise EUnsupportedPlatformService.Create('IFMXTimerService');
end;

procedure TForm1.BeginScene;
begin
     if FTimerService <> nil then
        FBeginTime := FTimerService.GetTick;
end;

procedure TForm1.EndScene;
begin
     if FTimerService <> nil then
     begin
          FEndTime    := FTimerService.GetTick;
          FRenderTime := FRenderTime + (FEndTime - FBeginTime);
          FFrameCount := FFrameCount + 1;

          if (FFrameCount > 10) and (FRenderTime > 0) then
          begin
               FFPS        := FFrameCount / FRenderTime;
               FRenderTime := 0;
               FFrameCount := 0;
          end;
     end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     TThread.CreateAnonymousThread(
     procedure
     var i: Integer;
     begin
          try
                 for i:=0 to 100 do
                 begin
                      BeginScene;

                      TThread.Synchronize(TThread.CurrentThread,
                      procedure
                      begin
                           
//----------------------------------------
// 显示代码写在这里
//----------------------------------------

                           Label1.Text := FFPS.ToString;
                      end);

                     EndScene;
                 end;
          finally
          end;
     end).Start;
end;[/mw_shl_code]
回复

使用道具 举报

90

主题

293

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
82018
板凳
发表于 2015-6-18 09:46:16 | 只看该作者
京东购书支持本站
已收藏

FPS(每秒传输帧数(Frames Per Second))编辑
FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数 愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低是30。某些计算机视频格式,每秒只能提供15帧。
FPS”也可以理解为我们常说的“刷新率(单位为Hz)”,例如我们常在CS游戏里说的“FPS值”。我们在装机选购显卡和显示器的时候,都会注意到“刷新率”。一般我们设置缺省刷新率都在75Hz(即75帧/秒)以上。例如:75Hz的刷新率刷也就是指屏幕一秒内只扫描75次,即75帧/秒。而当刷新率太低时我们肉眼都能感觉到屏幕的闪烁,不连贯,对图像显示效果和视觉感观产生不好的影响。
电影以每秒24张画面的速度播放,也就是一秒钟内在屏幕上连续投射出24张静止画面。有关动画播放速度的单位是fps,其中的f就是英文单词Frame(画面、帧),p就是Per(每),s就是Second(秒)。用中文表达就是多少帧每秒,或每秒多少帧。电影是24fps,通常简称为24帧。
(C)(P)Flying Wang
回复 支持 反对

使用道具 举报

90

主题

293

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
82018
地板
发表于 2015-6-18 09:46:18 | 只看该作者
京东数码购物支持本站
已收藏

FPS(每秒传输帧数(Frames Per Second))编辑
FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数 愈多,所显示的动作就会愈流畅。通常,要避免动作不流畅的最低是30。某些计算机视频格式,每秒只能提供15帧。
FPS”也可以理解为我们常说的“刷新率(单位为Hz)”,例如我们常在CS游戏里说的“FPS值”。我们在装机选购显卡和显示器的时候,都会注意到“刷新率”。一般我们设置缺省刷新率都在75Hz(即75帧/秒)以上。例如:75Hz的刷新率刷也就是指屏幕一秒内只扫描75次,即75帧/秒。而当刷新率太低时我们肉眼都能感觉到屏幕的闪烁,不连贯,对图像显示效果和视觉感观产生不好的影响。
电影以每秒24张画面的速度播放,也就是一秒钟内在屏幕上连续投射出24张静止画面。有关动画播放速度的单位是fps,其中的f就是英文单词Frame(画面、帧),p就是Per(每),s就是Second(秒)。用中文表达就是多少帧每秒,或每秒多少帧。电影是24fps,通常简称为24帧。
(C)(P)Flying Wang
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|新时代Pascal论坛

GMT+8, 2024-5-18 15:09 , Processed in 0.057940 second(s), 23 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表