42 lines
744 B
C++
42 lines
744 B
C++
#include "FPS.h"
|
|
|
|
FPS::FPS(int maxFPSArg) {
|
|
_maxFPS = maxFPSArg;
|
|
|
|
_fps = 0;
|
|
_frame = 0;
|
|
|
|
_frameTimer.Start();
|
|
_fpsCalc.Start();
|
|
}
|
|
|
|
FPS::~FPS(void) {
|
|
|
|
}
|
|
|
|
void FPS::LimitFPS(void) {
|
|
// Calculate the FPS.
|
|
if(_fpsCalc.GetTicks() > 1000) {
|
|
|
|
_fps = _frame / (_fpsCalc.GetTicks() / 1000);
|
|
|
|
_fpsCalc.Start();
|
|
_frame = 0;
|
|
}
|
|
|
|
// Put a limitation on the FPS.
|
|
if(1000 / _maxFPS > _frameTimer.GetTicks()) {
|
|
// SDL_Delay does not accept a float so for higher framerate
|
|
// limits there's an innacuracy. This is as much as 3fps
|
|
// at a limit of 60fps.
|
|
SDL_Delay((1000 / _maxFPS) - _frameTimer.GetTicks());
|
|
}
|
|
|
|
_frameTimer.Start();
|
|
_frame++;
|
|
}
|
|
|
|
void FPS::SetMaxFPS(int maxFPSArg) {
|
|
_maxFPS = maxFPSArg;
|
|
}
|