본문 바로가기

Programming/API

프레임 출력

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