1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
\r
2 // This file is part of the "Irrlicht Engine".
\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
\r
5 #include "CFPSCounter.h"
\r
14 CFPSCounter::CFPSCounter()
\r
15 : FPS(60), Primitive(0), StartTime(0), FramesCounted(0),
\r
16 PrimitivesCounted(0), PrimitiveAverage(0), PrimitiveTotal(0)
\r
22 //! returns current fps
\r
23 s32 CFPSCounter::getFPS() const
\r
29 //! returns current primitive count
\r
30 u32 CFPSCounter::getPrimitive() const
\r
36 //! returns average primitive count of last period
\r
37 u32 CFPSCounter::getPrimitiveAverage() const
\r
39 return PrimitiveAverage;
\r
43 //! returns accumulated primitive count since start
\r
44 u32 CFPSCounter::getPrimitiveTotal() const
\r
46 return PrimitiveTotal;
\r
50 //! to be called every frame
\r
51 void CFPSCounter::registerFrame(u32 now, u32 primitivesDrawn)
\r
54 PrimitiveTotal += primitivesDrawn;
\r
55 PrimitivesCounted += primitivesDrawn;
\r
56 Primitive = primitivesDrawn;
\r
58 const u32 milliseconds = now - StartTime;
\r
60 if (milliseconds >= 1500 )
\r
62 const f32 invMilli = core::reciprocal ( (f32) milliseconds );
\r
64 FPS = core::ceil32 ( ( 1000 * FramesCounted ) * invMilli );
\r
65 PrimitiveAverage = core::ceil32 ( ( 1000 * PrimitivesCounted ) * invMilli );
\r
68 PrimitivesCounted = 0;
\r
74 } // end namespace video
\r
75 } // end namespace irr
\r