본문 바로가기

Win32 api

Win32 api 강의 11화.

- 간단한 fps 출력

void CTimeMgr::update()
{
    QueryPerformanceCounter(&m_llCurCount);

    // fps 계산 과정.
    LONGLONG countGap = m_llCurCount.QuadPart - m_llPrevCount.QuadPart;
    m_dDeltaTime = static_cast<double>(countGap) / static_cast<double>(m_llFrequency.QuadPart);

    m_llPrevCount = m_llCurCount;

    ++m_iCallCount;
    m_dTimeAcc += m_dDeltaTime;

    if (m_dTimeAcc >= 1.0)
    {
        m_iFPS = static_cast<double>(m_iCallCount) / m_dTimeAcc;

        m_iCallCount = 0;
        m_dTimeAcc = 0;

        wchar_t szFPS[32] = L"";
        wsprintfW(szFPS, L"FPS: %d", m_iFPS);
        SetWindowTextW(CCore::GetInstance()->GetWnd(), szFPS);
    }
}

 

단순히 시간 관련 값을 계산하는 과정이다.

 

먼저 이전 프레임과의 count 값 차이를 초당 진동수(m_llFrequency) 값으로 나눠주면

한 프레임 처리당 걸린 시간인 DeltaTime 값을 도출.

 

fps 값은 단순히 

    ++m_iCallCount;
    m_dTimeAcc += m_dDeltaTime;

 

프레임마다 걸린 시간을 축적해서 1초 정도가 걸릴 때까지 기다렸다가

 

카운트 값을 축적된 값으로 나눠주면 됨.

 

    if (GetAsyncKeyState(VK_LEFT) & 0x8000)
    {
        pos.x -= 100.f * CTimeMgr::GetInstance()->GetDeltaTimeF();
    }

DeltaTime 값을 통해 기기 성능에 관계 없이 일정한 속도값을 계산 가능.

'Win32 api' 카테고리의 다른 글

Win32 api 강의 13 - 14화.  (0) 2025.09.14
Win32 api 강의 12화.  (0) 2025.09.13
Win32 api 강의 10화.  (0) 2025.09.12
Win32 api 강의 9화.  (0) 2025.09.12
Win32 api 강의 8화.  (0) 2025.09.12