]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/CFPSCounter.cpp
Reduce IrrCompileConfig usage to files that actually need it
[irrlicht.git] / source / Irrlicht / CFPSCounter.cpp
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
4 \r
5 #include "CFPSCounter.h"\r
6 #include "irrMath.h"\r
7 \r
8 namespace irr\r
9 {\r
10 namespace video\r
11 {\r
12 \r
13 \r
14 CFPSCounter::CFPSCounter()\r
15 :       FPS(60), Primitive(0), StartTime(0), FramesCounted(0),\r
16         PrimitivesCounted(0), PrimitiveAverage(0), PrimitiveTotal(0)\r
17 {\r
18 \r
19 }\r
20 \r
21 \r
22 //! returns current fps\r
23 s32 CFPSCounter::getFPS() const\r
24 {\r
25         return FPS;\r
26 }\r
27 \r
28 \r
29 //! returns current primitive count\r
30 u32 CFPSCounter::getPrimitive() const\r
31 {\r
32         return Primitive;\r
33 }\r
34 \r
35 \r
36 //! returns average primitive count of last period\r
37 u32 CFPSCounter::getPrimitiveAverage() const\r
38 {\r
39         return PrimitiveAverage;\r
40 }\r
41 \r
42 \r
43 //! returns accumulated primitive count since start\r
44 u32 CFPSCounter::getPrimitiveTotal() const\r
45 {\r
46         return PrimitiveTotal;\r
47 }\r
48 \r
49 \r
50 //! to be called every frame\r
51 void CFPSCounter::registerFrame(u32 now, u32 primitivesDrawn)\r
52 {\r
53         ++FramesCounted;\r
54         PrimitiveTotal += primitivesDrawn;\r
55         PrimitivesCounted += primitivesDrawn;\r
56         Primitive = primitivesDrawn;\r
57 \r
58         const u32 milliseconds = now - StartTime;\r
59 \r
60         if (milliseconds >= 1500 )\r
61         {\r
62                 const f32 invMilli = core::reciprocal ( (f32) milliseconds );\r
63 \r
64                 FPS = core::ceil32 ( ( 1000 * FramesCounted ) * invMilli );\r
65                 PrimitiveAverage = core::ceil32 ( ( 1000 * PrimitivesCounted ) * invMilli );\r
66 \r
67                 FramesCounted = 0;\r
68                 PrimitivesCounted = 0;\r
69                 StartTime = now;\r
70         }\r
71 }\r
72 \r
73 \r
74 } // end namespace video\r
75 } // end namespace irr\r
76 \r