added high resolution timer
This commit is contained in:
parent
04a82a7364
commit
c3d5e23518
@ -4,6 +4,7 @@
|
||||
#include "glassert.h"
|
||||
#include "camera.h"
|
||||
#include "module.h"
|
||||
#include <chrono>
|
||||
|
||||
// main methods
|
||||
|
||||
@ -60,7 +61,11 @@ void SparrowRenderer::renderGL()
|
||||
for(ModuleNode &m : modules)
|
||||
{
|
||||
if(m.isEnabled)
|
||||
{
|
||||
std::chrono::high_resolution_clock::time_point t = std::chrono::high_resolution_clock::now();
|
||||
m.module->renderGL(getCamera(), scene);
|
||||
m.seconds = std::chrono::duration_cast<std::chrono::duration<double>>(std::chrono::high_resolution_clock::now() - t).count();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,6 +74,24 @@ bool SparrowRenderer::isModernOpenGLAvailable()
|
||||
return modernOpenglAvailable;
|
||||
}
|
||||
|
||||
// clock methods
|
||||
|
||||
double SparrowRenderer::getFPS()
|
||||
{
|
||||
double totalTime = 0;
|
||||
for(ModuleNode &m : modules)
|
||||
{
|
||||
if(m.isEnabled)
|
||||
totalTime += m.seconds;
|
||||
}
|
||||
return 1./totalTime;
|
||||
}
|
||||
|
||||
double SparrowRenderer::getModuleTime(int moduleId)
|
||||
{
|
||||
return modules[moduleId].seconds;
|
||||
}
|
||||
|
||||
// module methods
|
||||
|
||||
void SparrowRenderer::addModule(Module* myModule, std::string name)
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef SPARROWRENDERER_H
|
||||
#define SPARROWRENDERER_H
|
||||
|
||||
#include <list>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
class Camera;
|
||||
@ -18,6 +18,10 @@ public:
|
||||
void renderGL();
|
||||
static bool isModernOpenGLAvailable();
|
||||
|
||||
// clock methods
|
||||
double getFPS();
|
||||
double getModuleTime(int moduleId);
|
||||
|
||||
// modules methods
|
||||
void addModule(Module* myModule, std::string name);
|
||||
int getNbModules();
|
||||
@ -35,16 +39,17 @@ protected:
|
||||
Module* module;
|
||||
std::string name;
|
||||
bool isEnabled;
|
||||
double seconds;
|
||||
|
||||
s_moduleNode(Module* myModule, const std::string &myName) : module(myModule), name(myName), isEnabled(true) {}
|
||||
} ModuleNode;
|
||||
|
||||
Camera* camera;
|
||||
Scene* scene;
|
||||
std::list<ModuleNode> modules;
|
||||
std::vector<ModuleNode> modules;
|
||||
static bool modernOpenglAvailable;
|
||||
|
||||
std::list<ModuleNode>::iterator getModuleNode(std::string name);
|
||||
std::vector<ModuleNode>::iterator getModuleNode(std::string name);
|
||||
};
|
||||
|
||||
#endif // SPARROWRENDERER_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user