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;
}