X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprofiler.cpp;h=37caa68636745f85c0f6290e006fef426618370c;hb=73c55fc88d8bad336fbd6cfecedc0cf18d06167c;hp=ec9138de8794936672e00866dd8dccc0e9329ec2;hpb=ca49785159e6a7cfd2d999a99041fa1567575a24;p=gldbg.git diff --git a/source/profiler.cpp b/source/profiler.cpp index ec9138d..37caa68 100644 --- a/source/profiler.cpp +++ b/source/profiler.cpp @@ -1,41 +1,55 @@ +/* $Id$ + +This file is part of gldbg +Copyright © 2010 Mikko Rasa, Mikkosoft Productions +Distributed under the GPL +*/ + #include #include #include +#include "gldbg.h" #include "profiler.h" +using namespace std; using namespace Msp; -Profiler::Profiler(): +Profiler::Profiler(GlDbg &dbg): decoder(gldecoder_new(this, 0)), enabled(false) { + dbg.get_command_interpreter().register_command("profile", this, &Profiler::cmd_profile) + .set_help("Profiles GL usage and performance", + "profile {on|off}\n" + " Enables or disables profiling\n"); + decoder->glDrawArrays = glDrawArrays; decoder->glDrawElements = glDrawElements; decoder->glDrawRangeElements = glDrawRangeElements; decoder->glXSwapBuffers = glXSwapBuffers; } -void Profiler::enable() -{ - enabled = true; - frames = 0; - draw_calls = 0; - vertices = 0; - triangles = 0; - start = Msp::Time::now(); -} - -void Profiler::disable() +void Profiler::decode(const char *data, unsigned len) { - enabled = false; + if(enabled) + gldecoder_decode(decoder, data, len); } -int Profiler::decode(const char *data, unsigned len) +void Profiler::cmd_profile(const string &args) { - if(enabled) - return gldecoder_decode(decoder, data, len); + if(args.empty() || args=="on") + { + enabled = true; + frames = 0; + draw_calls = 0; + vertices = 0; + triangles = 0; + start = Msp::Time::now(); + } + else if(args=="off") + enabled = false; else - return 0; + throw InvalidParameterValue("Invalid argument"); } void Profiler::glDrawArrays(void *user_data, GLenum mode, int, int count)