Implemented a simpler frame rate system

This commit is contained in:
Kayne Ruse
2013-06-23 15:05:52 +10:00
parent 3232925ccd
commit 7ad855348f
4 changed files with 31 additions and 27 deletions
+6 -1
View File
@@ -34,6 +34,7 @@ InWorld::InWorld() {
cout << "entering InWorld" << endl;
#endif
cout << "Client Index: " << infoMgr->GetClientIndex() << endl;
font.SetSurface(surfaceMgr->Get("font"));
}
InWorld::~InWorld() {
@@ -59,7 +60,11 @@ void InWorld::FrameEnd() {
}
void InWorld::Render(SDL_Surface* const screen) {
//
ClockFrameRate();
//since we're using this twice, make a tmp var
string fps = itos(GetFrameRate());
font.DrawStringTo(fps, screen, screen->w - fps.size() * font.GetCharW(), 0);
}
//-------------------------
+2 -1
View File
@@ -35,6 +35,7 @@
#include "udp_network_utility.hpp"
#include "button.hpp"
#include "raster_font.hpp"
#include "frame_rate.hpp"
class InWorld : public BaseScene {
public:
@@ -70,7 +71,7 @@ protected:
InformationManager* infoMgr = ServiceLocator<InformationManager>::Get();
//members
//...
RasterFont font;
};
#endif
+21 -3
View File
@@ -21,6 +21,24 @@
*/
#include "frame_rate.hpp"
int FrameRate::frameCount = 0;
int FrameRate::lastFrameRate = 0;
FrameRate::Clock::time_point FrameRate::tick = FrameRate::Clock::now();
#include <chrono>
typedef std::chrono::high_resolution_clock Clock;
static int frameCount = 0;
static int lastFrameRate = 0;
static Clock::time_point tick = Clock::now();
int ClockFrameRate() {
frameCount++;
if (Clock::now() - tick >= std::chrono::duration<int>(1)) {
lastFrameRate = frameCount;
frameCount = 0;
tick = Clock::now();
}
return lastFrameRate;
}
int GetFrameRate() {
return lastFrameRate;
}
+2 -22
View File
@@ -22,27 +22,7 @@
#ifndef FRAMERATE_HPP_
#define FRAMERATE_HPP_
#include <chrono>
class FrameRate {
public:
typedef std::chrono::high_resolution_clock Clock;
FrameRate() = delete;
static int Calculate() {
frameCount++;
if (Clock::now() - tick >= std::chrono::duration<int>(1)) {
lastFrameRate = frameCount;
frameCount = 0;
tick = Clock::now();
}
return lastFrameRate;
}
static int GetFrameRate() { return lastFrameRate; }
private:
static int frameCount;
static int lastFrameRate;
static Clock::time_point tick;
};
int ClockFrameRate();
int GetFrameRate();
#endif