just call Start() before the main loop, SetLimit(int) sometime after that but still before the main loop, and then call
RunFrame() at the end of every frame drawing loop...
btw, this is very messy code...
class FpsCalculator{public: void Start() { lasttick=SDL_GetTicks(); fps=0.0f; frames=0; fpslimit=30; tickdelta=1.0f; currentticks=lasttick; oldtick=lasttick; }; void RunFrame() { float milliPerFrame; float aimMilliPerFrame; float shiftMilliPerFrame; currentticks=SDL_GetTicks(); frames++; if (oldtick+1000<currentticks) { frames=0; oldtick=currentticks; } milliPerFrame=currentticks-lasttick; tickdelta=(tickdelta+1.0f/((((float)fpslimit)/1000.0f)*milliPerFrame))/2.0f; fps=tickdelta*(float)fpslimit; aimMilliPerFrame=1000.0f/(float)fpslimit; shiftMilliPerFrame=aimMilliPerFrame*tickdelta-aimMilliPerFrame; if (shiftMilliPerFrame>0.0f) { SDL_Delay((Uint32)shiftMilliPerFrame); } lasttick=currentticks; }; void Setlimit(int limit) { fpslimit=limit; }; float Getfps() { tickdelta=1.0f; return fps; }; int GetFrames() { return frames; }; Uint32 currentticks; Uint32 lasttick; Uint32 oldtick; float tickdelta; float fps; int frames; int fpslimit;};