Gl Graph
Gl Graph Source of glscenestat.h
#ifndef GL_SCENE_STAT_H
#define GL_SCENE_STAT_H
#include <time.h>
#include <unistd.h>
class GlSceneStat {
private:
double meanFrameComputationTime;
double frameComputationTime;
int nbFrameComputationTime;
timespec starting_time;
timespec endding_time;
public:
GlSceneStat()
{
this->nbFrameComputationTime=0;
this->frameComputationTime=0;
this->meanFrameComputationTime=0;
}
double getDeltaTime(timespec &starting_time,timespec &endding_time)
{
int64_t t1 = ((int64_t) starting_time.tv_sec)*1000000000 + starting_time.tv_nsec;
int64_t t2 = ((int64_t) endding_time.tv_sec)*1000000000 + endding_time.tv_nsec;
int64_t diff_time = t2 - t1;
return diff_time/1.0e9;
}
void setTime(float delta)
{
if (nbFrameComputationTime <100)
{
this->frameComputationTime += delta;
this->nbFrameComputationTime++;
} else
this->frameComputationTime=100*(100.0*frameComputationTime/nbFrameComputationTime +delta)/101.0;
this->meanFrameComputationTime=frameComputationTime/nbFrameComputationTime;
}
void startScene()
{
clock_gettime(CLOCK_REALTIME, &starting_time);
}
void endScene()
{
clock_gettime(CLOCK_REALTIME, &endding_time);
float delta=getDeltaTime(starting_time,endding_time);
setTime(delta);
}
float getMeanTime()
{
return this->meanFrameComputationTime;
}
};
#endif