Implemented a simpler frame rate system
This commit is contained in:
+6
-1
@@ -34,6 +34,7 @@ InWorld::InWorld() {
|
|||||||
cout << "entering InWorld" << endl;
|
cout << "entering InWorld" << endl;
|
||||||
#endif
|
#endif
|
||||||
cout << "Client Index: " << infoMgr->GetClientIndex() << endl;
|
cout << "Client Index: " << infoMgr->GetClientIndex() << endl;
|
||||||
|
font.SetSurface(surfaceMgr->Get("font"));
|
||||||
}
|
}
|
||||||
|
|
||||||
InWorld::~InWorld() {
|
InWorld::~InWorld() {
|
||||||
@@ -59,7 +60,11 @@ void InWorld::FrameEnd() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void InWorld::Render(SDL_Surface* const screen) {
|
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
@@ -35,6 +35,7 @@
|
|||||||
#include "udp_network_utility.hpp"
|
#include "udp_network_utility.hpp"
|
||||||
#include "button.hpp"
|
#include "button.hpp"
|
||||||
#include "raster_font.hpp"
|
#include "raster_font.hpp"
|
||||||
|
#include "frame_rate.hpp"
|
||||||
|
|
||||||
class InWorld : public BaseScene {
|
class InWorld : public BaseScene {
|
||||||
public:
|
public:
|
||||||
@@ -70,7 +71,7 @@ protected:
|
|||||||
InformationManager* infoMgr = ServiceLocator<InformationManager>::Get();
|
InformationManager* infoMgr = ServiceLocator<InformationManager>::Get();
|
||||||
|
|
||||||
//members
|
//members
|
||||||
//...
|
RasterFont font;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -21,6 +21,24 @@
|
|||||||
*/
|
*/
|
||||||
#include "frame_rate.hpp"
|
#include "frame_rate.hpp"
|
||||||
|
|
||||||
int FrameRate::frameCount = 0;
|
#include <chrono>
|
||||||
int FrameRate::lastFrameRate = 0;
|
|
||||||
FrameRate::Clock::time_point FrameRate::tick = FrameRate::Clock::now();
|
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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -22,27 +22,7 @@
|
|||||||
#ifndef FRAMERATE_HPP_
|
#ifndef FRAMERATE_HPP_
|
||||||
#define FRAMERATE_HPP_
|
#define FRAMERATE_HPP_
|
||||||
|
|
||||||
#include <chrono>
|
int ClockFrameRate();
|
||||||
|
int GetFrameRate();
|
||||||
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;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user