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  QueryPerformanceFrequency(&l);
34  invFreq = 1.0f / l.QuadPart;
35  reset();
36  }
37 
38  void Timer::reset()
39  {
40  LARGE_INTEGER l;
41  QueryPerformanceCounter(&l);
42  resetStamp = (((double)l.QuadPart) * invFreq);
43  }
44 
45  float Timer::getTime()
46  {
47  LARGE_INTEGER l;
48  QueryPerformanceCounter(&l);
49  return (float)(((double)l.QuadPart) * invFreq - resetStamp);
50  }
51 }
52 #else
53 
54 #include <sys/time.h>
55 
56 namespace MaliSDK
57 {
58  Timer::Timer()
59  : startTime()
60  , currentTime()
61  {
62  startTime.tv_sec = 0;
63  startTime.tv_usec = 0;
64  currentTime.tv_sec = 0;
65  currentTime.tv_usec = 0;
66 
67  reset();
68  }
69 
70  void Timer::reset()
71  {
72  gettimeofday(&startTime, NULL);
73  }
74 
75  float Timer::getTime()
76  {
77  gettimeofday(&currentTime, NULL);
78  float seconds = (currentTime.tv_sec - startTime.tv_sec);
79  float milliseconds = (float(currentTime.tv_usec - startTime.tv_usec)) / 1000000.0f;
80  return seconds + milliseconds;
81  }
82 }
83 #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
void reset()
Resets the timer to 0.0f.
Definition: Timer.cpp:100
timeval currentTime
Definition: Timer.h:50
GLfloat GLfloat f
Definition: gl2ext.h:2707
timeval startTime
Definition: Timer.h:49
precision highp float
Definition: hiz_cull.cs:37