www.pudn.com > 3dterrain.zip > Timer.cpp
#include "timer.h"
Timer::Timer(void) // inicializácia časovača
{
mm_timer_start = 0;
performance_timer_start = 0;
// zistenie či rýchli časovač je použiteľný
if (!QueryPerformanceFrequency((LARGE_INTEGER *) &(frekvencia) ))
{
// rýchli časovač nepodporovaný hardwarom
performance_timer = FALSE; // nastav Performance Timer na false
mm_timer_start = timeGetTime(); // použitím timeGetTime() nastav štartovaciu hodnotu
perioda = 1.0f/1000.0f; // nastav periodu na 1 ms
frekvencia = 1000; // nastav frekvenciu na 1000 Hz
}
else
{
// rýchli časovač je prístupný
QueryPerformanceCounter((LARGE_INTEGER *) &(performance_timer_start) ); //nastavenie štartovacej hodnoty
performance_timer = TRUE; // nastav Performance Timer na TRUE
perioda = (float) (1.0/((double)frekvencia)); // vypočítanie periódy
}
}
float Timer::GetTime(void) // vráti čas v sekundách
{
__int64 time; // na uloženie aktuálnej hodnoty časovača
if (performance_timer) // je použitý rýchli časovač (Performance Timer ) ?
{
QueryPerformanceCounter((LARGE_INTEGER *) &time); // načítanie aktuálnej hodnoty časovača
// vráti aktuálnu hodnotu minus štartovaciu hodnotu nasobenú periódou
return ( (float) ( time - performance_timer_start) * perioda);
}
else
{ return( (float) ( timeGetTime() - mm_timer_start) * perioda);} // vráti počet sekúnd od štartu
}
void Timer::Reset(void)
{
if (performance_timer) // je použitý rýchli časovač (Performance Timer ) ?
{ QueryPerformanceCounter((LARGE_INTEGER *) &(performance_timer_start) );}
else
{ mm_timer_start = timeGetTime();}
}