모든 컴퓨터의 성능이 같을 수 없으니 각각의 컴퓨터의 성능에 따라 frame에 걸리는 시간을 구하기 위해 사용하는 manager
Frame Per Seconds
1초 당 몇 프레임으로 나누어지는지를 나타내는 지표
즉, 1초 당 프로그램이 몇번 실행되는지를 나타내는 지표
ex) 10FPS
-> 1초를 10프레임으로 나누는 것을 의미
즉, 한 캐릭터가 1초에 100Pixel을 이동해야하면 10FPS일 경우 1프레임에 10Pixel을 이동하게 된다.
Delta Time
FPS에 역수로 1프레임이 실행되는 실제 시간을 나타냄
void init() { // 프레임과 프레임사이의 카운팅 수를 세기 위해 사용 QueryPerformanceCounter(&m_llPrevCount); // 1초에 10^7만큼 카운팅함 QueryPerformanceFrequency(&m_llFrequency); } void update() { QueryPerformanceCoutner(&m_llCurCount); // 1프레임 동안 몇번 카운팅이 됬는지를 구한 후 //m_llFrequency는 1초에 10^7만큼 카운팅이니 즉, 1카운팅은 1/10^7초라는 것이되고 // 1프레임에 카운팅 된수에 1/10^7 만큼 곱하면 1프레임에 실제 실행시간이 나오게됩니다. // 즉 deltatime을 구하게 됨 m_dDt = (double)(m_llCurCount-m_llPrevCount)/(double)m_llFrequency; } void render() { // 좀 더 정확하게 fps를 제기 위해서 ++m_iCallCount; m_Acc+=m_dDT; // dt가 1초 쌓여다는것은 즉, 1초에 몇프레임이 지나갔는지 fps를 구할 수 있는데 // m_iCallCount에 render 함수가 1초동안 실행하게 된 횟수를 저장(모든 프로그램) if(m_Acc>=1.f) { // 현재 프로그램의 컴퓨터에 따른 FPS m_iFps=m_iCallCount; m_iCallCount=0; m_Acc=0; } }