Subversion Repositories gelsvn

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
20 jrf 1
#ifndef TIMER_H
2
#define TIMER_H
3
 
4
#include <ctime>
5
 
6
class Timer
7
{
8
 public:
9
  Timer() : t1(0), t2(0) { }
10
 
11
  void start()
12
  {
13
    t1 = std::clock();
14
  }
15
 
16
  double split()
17
  {
18
    return (std::clock() - t1) / static_cast<double>(CLOCKS_PER_SEC);
19
  }
20
 
21
  void stop()
22
  {
23
    t2 = std::clock();
24
  }
25
 
26
  double get_time()
27
  {
28
    return (t2 - t1) / static_cast<double>(CLOCKS_PER_SEC);
29
  }
30
 
31
 private:
32
  int t1;
33
  int t2;
34
};
35
 
36
class FrameRateTimer : public Timer
37
{
38
 public:
39
  FrameRateTimer(int avg = 40) : average(avg), fps(0.0) { }
40
 
41
  void set_average(int avg) 
42
  {
43
    average = avg;
44
  }
45
 
46
  double get_fps()
47
  {
48
    one_frame();
49
    return fps;
50
  }
51
 
52
 private:
53
  int average;
54
  double fps;
55
 
56
  void one_frame()
57
  {
58
    static int i = 0;
59
 
60
    if(i >= average)
61
    {
62
      stop();
63
      fps = average / get_time();
64
      i = 0;
65
    }
66
    if(i == 0)
67
      start();
68
 
69
    i++; 
70
  }
71
};
72
 
73
#endif