简述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() - 4025040, Qt::white);
            p.drawText(
10, height() - 8, m_current_fps);
        }
    }

 

 

 

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

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

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

posted on 2010-02-04 15:05  chinese_submarine  阅读(11860)  评论(1编辑  收藏  举报