C++/WinAPI

[WinAPI] DeltaTime(델타타임) 구현

sihyeong 2022. 10. 10. 23:36

DeltaTime(델타타임)

  • 한 프레임당 실행하는 시간이다.

QueryPerformanceFrequency(LARGE_INTEGER* )

  • 카운트값이 1초에 증가되는 양을 반환

QueryPerformanceCounter(LARGE_INTEGER* )

  • 현재 시간의 카운트 값을 반환
따라서 업데이트 전의 카운트값과 후의 카운트값의 차이를 이용하여
업데이트 1사이클마다 증가되는 카운트값을 알 수 있고

이를 1초 카운트 증가값으로 나누면 업데이트에 걸린 시간을 알 수 있다.

이것이 곧 델타타임이다.

델타타임 == (현재카운트값 - 이전카운트값) / 1초카운트증가값

 

#include <iostream>
#include <Windows.h>

using namespace std;

int main()
{
    LARGE_INTEGER prevCount, frequency, curCount;
    QueryPerformanceCounter(&prevCount);    // 현재 count

    QueryPerformanceFrequency(&frequency);  // 1초당 count

    cout << "prevCount : " << prevCount.QuadPart << endl;
    cout << "frequency : " << frequency.QuadPart << endl;
    for (int i = 0; i < 1000000; i++) {}

    QueryPerformanceCounter(&curCount);
    cout << "curCount : " << curCount.QuadPart << endl;

    cout << "curCount-prevCount : " << curCount.QuadPart - prevCount.QuadPart << endl;
    cout << "deltatime : " << (double)(curCount.QuadPart - prevCount.QuadPart) / frequency.QuadPart << endl;
}