#include #include #include "Timer.h" Caldron::Base::CTimer& Caldron::Base::CTimer::_GetInstance() { static CTimer Instance; return Instance; } Caldron::Base::CTimer::~CTimer() { } void Caldron::Base::CTimer::Init( int keep ) { if( !QueryPerformanceFrequency( &m_QPFTicksPerSec ) ) MessageBox( NULL, "ŸÀ̸ӽýºÅÛÀ»Áö¿øÇÒ¼ö¾ø½À´Ï´Ù.", "¿¡·¯", MB_OK ); QueryPerformanceCounter( &m_StartTime ); m_fFps = 0; m_fElapsedTime = 0; m_iKeepFrame = keep; } void Caldron::Base::CTimer::Update() { static LARGE_INTEGER CurTime; static LARGE_INTEGER LastTime = m_StartTime; QueryPerformanceCounter( &CurTime ); m_fElapsedTime = (float)(((double)CurTime.QuadPart - (double)LastTime.QuadPart) / (double)m_QPFTicksPerSec.QuadPart); m_fFps = (float)((double)m_QPFTicksPerSec.QuadPart / ((double)CurTime.QuadPart - (double)LastTime.QuadPart)); m_fAppTime = (float)(((double)CurTime.QuadPart - (double)m_StartTime.QuadPart) / (double)m_QPFTicksPerSec.QuadPart); if( m_iKeepFrame > 0 ) { while( m_fFps > (float)m_iKeepFrame ) { m_fFps = (float)((double)m_QPFTicksPerSec.QuadPart / ((double)CurTime.QuadPart - (double)LastTime.QuadPart)); QueryPerformanceCounter( &CurTime ); } } LastTime = CurTime; }