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();} 
}