40 double laTimer::_dTimeMultiplier = 1;
42 laTimer::laTimer(
void)
44 _dwTickCount = GetTickCount();
45 QueryPerformanceFrequency(&fr);
47 _ttSampleFPS.parameters(1);
48 _ttSampleFPS.enable(M_TRUE);
50 _bFirstFrame = M_TRUE;
51 _bStatisticsOn = M_FALSE;
53 _dFPS = _dFPS_Min = _dFPS_Max = 60;
55 _dFPS_Sampled = _dFPS_Avg = _dFPS;
59 laTimer::~laTimer(
void)
63 void laTimer::frameForce(
double fps)
69 void laTimer::frameStart()
71 QueryPerformanceCounter(&f_start);
79 void laTimer::frameEnd()
82 QueryPerformanceCounter(&f_end);
84 double delta = (f_end.QuadPart - f_start.QuadPart)/((
double)fr.QuadPart);
86 if( _bFirstFrame ) _bFirstFrame = M_FALSE;
89 _dSPF = delta * _dTimeMultiplier;
90 _dFPS = (1.0/_dSPF) * _dTimeMultiplier;
92 if( _bStatisticsOn ) {
93 if( _dFPS < _dFPS_Min) _dFPS_Min = _dFPS;
94 if( _dFPS > _dFPS_Max) _dFPS_Max = _dFPS;
96 _dFPS_Avg = ( _dFPS_Avg * _nsamples + _dFPS ) / ( _nsamples + 1.0 );
102 _ttSampleFPS.animate(*
this);
103 if(_ttSampleFPS.isElapsed() )
105 _dFPS_Sampled = _dFPS;
106 _ttSampleFPS.reset();
110 void laTimer::statistics_log()
112 MLOG(
"FPS Statistics: min( %.1lf FPS ), max( %.1lf FPS ), avg( %.1lf FPS, %.1lf samples )",
113 fps_min(), fps_max(), fps_avg(), _nsamples);