Imported update to FrameRate

This commit is contained in:
Kayne Ruse
2013-06-04 21:11:21 +10:00
parent a8b798ddff
commit a260f29d4f
4 changed files with 39 additions and 17 deletions
+2 -2
View File
@@ -40,7 +40,7 @@ TestSystems::~TestSystems() {
//------------------------- //-------------------------
void TestSystems::FrameStart() { void TestSystems::FrameStart() {
frameRate.Calculate(); FrameRate::Calculate();
} }
void TestSystems::Update(double delta) { void TestSystems::Update(double delta) {
@@ -60,7 +60,7 @@ string IToS(int i) {
void TestSystems::Render(SDL_Surface* const screen) { void TestSystems::Render(SDL_Surface* const screen) {
playerMgr.DrawAllTo(screen); playerMgr.DrawAllTo(screen);
font.DrawStringTo("FPS: " + IToS(frameRate.GetFrameRate()), screen, 16, 16); font.DrawStringTo("FPS: " + IToS(FrameRate::GetFrameRate()), screen, 16, 16);
} }
//------------------------- //-------------------------
-2
View File
@@ -45,8 +45,6 @@ protected:
UDPNetworkUtility* netUtil = nullptr; UDPNetworkUtility* netUtil = nullptr;
PlayerManager playerMgr; PlayerManager playerMgr;
FrameRate frameRate;
RasterFont font; RasterFont font;
int playerCounter; int playerCounter;
+26
View File
@@ -0,0 +1,26 @@
/* Copyright: (c) Kayne Ruse 2013
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source
* distribution.
*/
#include "frame_rate.hpp"
int FrameRate::frameCount = 0;
int FrameRate::lastFrameRate = 0;
FrameRate::Clock::time_point FrameRate::tick = FrameRate::Clock::now();
+11 -13
View File
@@ -22,29 +22,27 @@
#ifndef FRAMERATE_HPP_ #ifndef FRAMERATE_HPP_
#define FRAMERATE_HPP_ #define FRAMERATE_HPP_
#include <ctime> #include <chrono>
class FrameRate { class FrameRate {
public: public:
FrameRate() { typedef std::chrono::high_resolution_clock Clock;
frameCount = lastFrameRate = tick = 0;
} FrameRate() = delete;
int Calculate() { static int Calculate() {
frameCount++; frameCount++;
if (clock() - tick >= CLOCKS_PER_SEC) { if (Clock::now() - tick >= std::chrono::duration<int>(1)) {
lastFrameRate = frameCount; lastFrameRate = frameCount;
frameCount = 0; frameCount = 0;
tick = clock(); tick = Clock::now();
} }
return lastFrameRate; return lastFrameRate;
} }
int GetFrameRate() const { static int GetFrameRate() { return lastFrameRate; }
return lastFrameRate;
}
private: private:
int frameCount; static int frameCount;
int lastFrameRate; static int lastFrameRate;
int tick; static Clock::time_point tick;
}; };
#endif #endif