GetTickCount() 이용
void Frame(void)
{
HDC hdc;
static DWORD dwFTime;
static DWORD dwNum;
static DWORD dwFrame;
char szBuf[128];
DWORD dwTime = GetTickCount();
if(dwFTime < dwTime)
{
dwFTime = dwTime + 1000;
dwFrame = dwNum;
dwNum = 0;
}
else
{
dwNum++;
}
hdc = GetDC(g_hWnd);
wsprintf(szBuf, "%d", dwFrame);
TextOut(g_Image[IMG_BACK].MemDC, 10, 10, szBuf, strlen(szBuf));
wsprintf(szBuf, "%d", nCnt);
TextOut(g_Image[IMG_BACK].MemDC, 10, 30, szBuf, strlen(szBuf));
ReleaseDC(g_hWnd, hdc);
}
CPU 주파수 이용
// 선언
LARGE_INTEGER m_liTick;
// 초기화
// Frame 1초당 클럭수를 얻는다
QueryPerformanceFrequency(&m_liTick);
//╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋
// ~m^^m~ 09-08-30, 메인게임 프레임 제한 ㉿-Min
//╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋
bool CMainGame::Frame(void)
{
static LARGE_INTEGER liLimit;
LARGE_INTEGER liTime;
//부팅부터 시작해서 현재까지의 누적된 클럭수를 얻는다
QueryPerformanceCounter(&liTime);
if(liLimit.QuadPart >= liTime.QuadPart)
{
return false;
}
else
{
liLimit.QuadPart = liTime.QuadPart + m_liTick.QuadPart / LIMITFRAME;
}
return true;
}
//╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋
// ~m^^m~ 09-08-30, 메인게임 프레임 출력 ㉿-Min
//╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋
void CMainGame::OutFrame(void)
{
static LARGE_INTEGER liFTime;
static int nFrame;
static int nNum;
LARGE_INTEGER liTime;
POINT pt;
char szBuf[128];
//부팅부터 시작해서 현재까지의 누적된 클럭수를 얻는다
QueryPerformanceCounter(&liTime);
if(liFTime.QuadPart < liTime.QuadPart)
{
liFTime.QuadPart = liTime.QuadPart + m_liTick.QuadPart;
nFrame = nNum;
nNum = 0;
}
else
{
nNum++;
}
pt.x = 900, pt.y = 10;
wsprintf(szBuf, "Frame : %d", nFrame);
m_Font[FONT_BASE].DrawFont(pt, szBuf, D3DXCOLOR( 1.0f, 0.0f, 0.0f, 1.0f ));
}
'Programming > API' 카테고리의 다른 글
timeGetTime & GetTickCount (0) | 2009.11.20 |
---|---|
GetMessage vs. PeekMessage (0) | 2009.11.06 |
SendMessage vs. PostMessage (0) | 2009.11.06 |
기본 세팅 파일 (0) | 2009.11.06 |