jubilant-funicular
FPSLimiter.cpp
1 #include <SDL2/SDL.h>
2 #include <cmath>
3 
4 #include "nta/FPSLimiter.h"
5 
6 namespace nta {
7  FPSLimiter::~FPSLimiter() {
8  m_maxFPS = m_fps = 0;
9  }
10  void FPSLimiter::setMaxFPS(float maxFPS) {
11  m_maxFPS = maxFPS;
12  }
13  float FPSLimiter::getFPS() const {
14  return m_fps;
15  }
16  long double FPSLimiter::end() {
17  long double frametime = Timer::end()/pow(10.,6); //elapsed time in milliseconds
18  if (frametime < 1000./m_maxFPS) {
19  SDL_Delay((1000./m_maxFPS) - frametime);
20  }
21  m_fps = 1./(Timer::end()/pow(10.,9));
22  return Timer::end();
23  }
24 }
nta::Timer::end
virtual long double end() const
return time since beginning of timer in nanoseconds
Definition: Timer.cpp:11
nta
Definition: Animation2D.h:6
nta::FPSLimiter::getFPS
float getFPS() const
gets most recently calculated fps
Definition: FPSLimiter.cpp:13
nta::FPSLimiter::end
long double end()
ends fps calculations, delaying if necessary to cap fps
Definition: FPSLimiter.cpp:16
nta::FPSLimiter::m_maxFPS
float m_maxFPS
maximum allowed fps
Definition: FPSLimiter.h:13
nta::FPSLimiter::setMaxFPS
void setMaxFPS(float maxFPS)
sets maximum allowed fps
Definition: FPSLimiter.cpp:10
nta::FPSLimiter::m_fps
float m_fps
most recently calculated fps
Definition: FPSLimiter.h:11