// Copyright (C) 2002-2012 Nikolaus Gebhardt // This file is part of the "Irrlicht Engine". // For conditions of distribution and use, see copyright notice in irrlicht.h #include "CFPSCounter.h" #include "irrMath.h" namespace irr { namespace video { CFPSCounter::CFPSCounter() : FPS(60), Primitive(0), StartTime(0), FramesCounted(0), PrimitivesCounted(0), PrimitiveAverage(0), PrimitiveTotal(0) { } //! returns current fps s32 CFPSCounter::getFPS() const { return FPS; } //! returns current primitive count u32 CFPSCounter::getPrimitive() const { return Primitive; } //! returns average primitive count of last period u32 CFPSCounter::getPrimitiveAverage() const { return PrimitiveAverage; } //! returns accumulated primitive count since start u32 CFPSCounter::getPrimitiveTotal() const { return PrimitiveTotal; } //! to be called every frame void CFPSCounter::registerFrame(u32 now, u32 primitivesDrawn) { ++FramesCounted; PrimitiveTotal += primitivesDrawn; PrimitivesCounted += primitivesDrawn; Primitive = primitivesDrawn; const u32 milliseconds = now - StartTime; if (milliseconds >= 1500 ) { const f32 invMilli = core::reciprocal ( (f32) milliseconds ); FPS = core::ceil32 ( ( 1000 * FramesCounted ) * invMilli ); PrimitiveAverage = core::ceil32 ( ( 1000 * PrimitivesCounted ) * invMilli ); FramesCounted = 0; PrimitivesCounted = 0; StartTime = now; } } } // end namespace video } // end namespace irr