Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

glt/frame.cpp

Go to the documentation of this file.
00001 #include "frame.h"
00002 
00015 #include <cstdio>
00016 using namespace std;
00017 
00018 GltFrameRate::GltFrameRate(const int sampleSize)
00019 : _frames(0), 
00020   _step(0.200),
00021   _lastFrameRate(0.0), 
00022   _lastFrameTime(0.0),
00023   _buffer(sampleSize)
00024 {
00025     _lastCalc = _timer.elapsed();
00026 }
00027 
00028 GltFrameRate::~GltFrameRate()
00029 {
00030 }
00031 
00032 GltFrameRate &
00033 GltFrameRate::operator++()
00034 {
00035     _frames++;
00036     _buffer.push_back(_timer.elapsed());
00037     
00038     // Recalculate frame rate and frame time
00039     // if we have sufficient samples and
00040     // enough time has elapsed.
00041     
00042     if (_buffer.size()>=2)
00043     {
00044         if ((_buffer.back()-_lastCalc)>=_step)
00045         {
00046             _lastCalc      = _buffer.back();
00047             _lastFrameTime = double(_buffer.back()-_buffer.front())/double(_buffer.size()-1);
00048             _lastFrameRate = 1.0/_lastFrameTime;
00049         }
00050     }
00051     
00052     return *this;
00053 }
00054 
00055 double GltFrameRate::elapsedTime() const { return _timer.elapsed(); }
00056 int    GltFrameRate::totalFrames() const { return _frames;          }
00057 
00058 double GltFrameRate::frameRate()   const { return _lastFrameRate; }
00059 double GltFrameRate::frameTime()   const { return _lastFrameTime; }
00060 
00061 std::string 
00062 GltFrameRate::summary() const
00063 {
00064     char buffer[1024];
00065     sprintf
00066     (
00067         buffer,
00068         "%3.0lf fps",
00069         frameRate()
00070     );
00071     return buffer;
00072 }
00073 
00074 std::string 
00075 GltFrameRate::detailed() const
00076 {
00077     char buffer[1024];
00078     sprintf
00079     (
00080         buffer,
00081         "%5.3lf sec %3.0lf fps",
00082         frameTime(),
00083         frameRate()
00084     );
00085     return buffer;
00086 }
00087 

Generated on Tue Nov 5 11:11:03 2002 for GLT by doxygen1.2.18