简述FPS的计算方法

FPSFrame per second的缩写,即每秒的帧数.这一术语广泛的应用于计算机图形学,视频采集,游戏等。

这里主要介绍一下视频游戏中的帧率,第一个First person shooter game的帧率只有大概6FPS,但是依然很成功。不过随着硬件设备,尤其是显卡性能的加强,现在游戏的帧率一般在30FPS~100FPS之间。由于每帧图像所消耗的时间不一样,造成帧率是在不断变化的,所以每个游戏都会设定一个最大的帧率,以保证平滑的切换。

下面就以一段QT中的代码介绍一下帧率的计算。

         //  Timing...
         static  QTime time;
        
static   int  frames  =   0 ;
        
static   bool  started  =   false ;

        
if  ( ! started  ||  time.elapsed()  >   1000 ) {
            qreal fps 
=  frames  *   1000 /  time.elapsed();
            
if  (fps  ==   0 )
                m_current_fps 
=   " counting fps... " ;
            
else
                m_current_fps 
=  QString::fromLatin1( " %3 FPS " ).arg(( int ) qRound(fps));

            time.start();
            started 
=   true ;
            frames 
=   0 ;

        } 
else  {
            
++ frames;

            p.setOpacity(
1 );
            p.setFont(QFont(
" times " 30 ));
            p.fillRect(
5 , height()  -   40 250 40 , Qt::white);
            p.drawText(
10 , height()  -   8 , m_current_fps);
        }
    }

 

 

 

由于一般实时的游戏都已一个定时器不断地刷新画面,所以每一帧的输出都是通过paintEvent来完成的。将上面这段代码放入paintEvent就可以统计出每秒的帧率。

那么怎么控制最大的帧率呢?

其实也很简单,就是通过设置定时器的interval来完成的,考虑到现在显示器的显示频率一般在60HZ,所以interval一般设置为1000/60ms 比较好,即60FPS是一个理论上最大的帧率。

转载于:https://www.cnblogs.com/chinese-zmm/archive/2010/02/04/1663669.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值