Skip to content

Commit de21ece

Browse files
committed
add sliding window FPS averager
1 parent 61fead8 commit de21ece

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

main.cpp

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <sstream>
66
#include <cmath>
77
#include <vector>
8+
#include <numeric>
89

910
#if 0
1011
#define WIDTH 1920
@@ -446,13 +447,16 @@ struct
446447
double distance, flatAngle, heightAngle;
447448
} Camera;
448449

450+
std::vector<Uint32> render_times(10);
451+
std::vector<Uint32>::iterator current_render_time = render_times.begin();
449452

450453

451454
int main( int argc, char* args[] )
452455
{
453456
Uint32 currentSec = 0;
454457
Uint32 currentSecFPS = 0;
455458
Uint8 previousSecFPS = 0;
459+
Uint32 renderTimeAvg, renderStartTick, renderEndTick;
456460

457461
SDL_Init(SDL_INIT_VIDEO);
458462
if(TTF_Init() == -1)
@@ -683,18 +687,26 @@ int main( int argc, char* args[] )
683687
}
684688
}
685689

690+
renderStartTick = SDL_GetTicks();
686691
SDL_FillRect(surface, NULL, SDL_MapRGB(surface->format, 0, 0, 0));
687-
688692
SU::render();
693+
renderEndTick = SDL_GetTicks();
689694
currentSecFPS++;
690695

696+
(*current_render_time) = (renderEndTick-renderStartTick);
697+
current_render_time++;
698+
if (current_render_time == render_times.end())
699+
current_render_time = render_times.begin();
700+
701+
renderTimeAvg = std::accumulate(render_times.begin(), render_times.end(), 0)/render_times.size();
702+
691703
SDL_Color c = {150, 150, 150};
692704
if (fps_visible)
693705
{
694706
text.str(std::string());
695707
text.clear();
696708

697-
text << (int)previousSecFPS << " FPS --- Scene: " << (*currentScene)->name;
709+
text << renderTimeAvg << "ms --- Scene: " << (*currentScene)->name;
698710

699711
SDL_Surface *textSurface = TTF_RenderText_Solid(font, text.str().c_str(), c);
700712

0 commit comments

Comments
 (0)