Blame | Last modification | View Log | RSS feed
#ifndef TIMER_H
#define TIMER_H
#include <ctime>
class Timer
{
public:
Timer() : t1(0), t2(0) { }
void start()
{
t1 = std::clock();
}
double split()
{
return (std::clock() - t1) / static_cast<double>(CLOCKS_PER_SEC);
}
void stop()
{
t2 = std::clock();
}
double get_time()
{
return (t2 - t1) / static_cast<double>(CLOCKS_PER_SEC);
}
private:
int t1;
int t2;
};
class FrameRateTimer : public Timer
{
public:
FrameRateTimer(int avg = 40) : average(avg), fps(0.0) { }
void set_average(int avg)
{
average = avg;
}
double get_fps()
{
one_frame();
return fps;
}
private:
int average;
double fps;
void one_frame()
{
static int i = 0;
if(i >= average)
{
stop();
fps = average / get_time();
i = 0;
}
if(i == 0)
start();
i++;
}
};
#endif