OpenGL ES SDK for Android ARM Developer Center
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Timer.cpp
Go to the documentation of this file.
1 /* Copyright (c) 2014-2017, ARM Limited and Contributors
2  *
3  * SPDX-License-Identifier: MIT
4  *
5  * Permission is hereby granted, free of charge,
6  * to any person obtaining a copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
9  * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14  * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19  */
20 
21 #include "Timer.h"
22 
23 #if defined(_WIN32)
24 
25 #include <cstdio>
26 #include <windows.h>
27 
28 namespace MaliSDK
29 {
30  Timer::Timer()
31  {
32  LARGE_INTEGER l;
33 
34  QueryPerformanceFrequency(&l);
35 
36  fps = 0.0f;
37  frameCount = 0;
38  invFreq = 1.0f / l.QuadPart;
39  lastFpsUpdate = 0.0f;
40  lastInterval = 0.0f;
41  lastTime = 0.0f;
42 
43  reset();
44  }
45 
46  void Timer::reset()
47  {
48  LARGE_INTEGER l;
49 
50  QueryPerformanceCounter(&l);
51 
52  resetStamp = (((double)l.QuadPart) * invFreq);
53  }
54 
55  float Timer::getTime()
56  {
57  LARGE_INTEGER l;
58 
59  QueryPerformanceCounter(&l);
60 
61  return (float)(((double)l.QuadPart) * invFreq - resetStamp);
62  }
63 }
64 #else
65 
66 #include <sys/time.h>
67 
68 namespace MaliSDK
69 {
70  Timer::Timer()
71  : startTime()
72  , currentTime()
73  , lastIntervalTime(0.0f)
74  , frameCount(0)
75  , fpsTime(0.0f)
76  , fps(0.0f)
77  {
78  startTime.tv_sec = 0;
79  startTime.tv_usec = 0;
80  currentTime.tv_sec = 0;
81  currentTime.tv_usec = 0;
82 
83  reset();
84  }
85 
86  void Timer::reset()
87  {
88  gettimeofday(&startTime, NULL);
89 
90  lastIntervalTime = 0.0;
91 
92  frameCount = 0;
93  fpsTime = 0.0f;
94  }
95 
96  float Timer::getTime()
97  {
98  gettimeofday(&currentTime, NULL);
99 
100  float seconds = (currentTime.tv_sec - startTime.tv_sec);
101  float milliseconds = (float(currentTime.tv_usec - startTime.tv_usec)) / 1000000.0f;
102 
103  return seconds + milliseconds;
104  }
105 }
106 #endif
Timer()
Default Constructor.
Definition: Timer.cpp:84
float getTime()
Returns the time passed since object creation or since reset() was last called.
Definition: Timer.cpp:109
float fps
Definition: Timer.h:41
void reset()
Resets the timer to 0.0f.
Definition: Timer.cpp:100
timeval currentTime
Definition: Timer.h:50
float lastTime
Definition: Timer.h:42
GLfloat GLfloat f
Definition: gl2ext.h:2707
timeval startTime
Definition: Timer.h:49
float lastIntervalTime
Definition: Timer.h:51
float fpsTime
Definition: Timer.h:52
precision highp float
Definition: hiz_cull.cs:37
int frameCount
Definition: Timer.h:40