mirror of
https://github.com/minetest/irrlicht.git
synced 2024-09-07 05:10:19 +02:00
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6000 dfc29bdd-3216-0410-991c-e03cc46cb475
77 lines
1.5 KiB
C++
77 lines
1.5 KiB
C++
// 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
|
|
|