게임 내 시간 체크(QueryPerformanceCounter)
안녕하세요~
게임을 할 때 시간, 프레임 체크가 엄청 중요한데요.
0.몇 초 안에 우승, 준우승이 갈리기도 하니까요~
여튼 게임 내 시간체크를 할 때는 아래와 같이
LARGE_INTEGER 구조체와 cpu클럭을 이용한 걸 이용합니다.
API이 GetTickCount나 timeGetTime을 쓰기도 하지만 정확도는 떨어지기 때문에 잘 사용하지 않습니다~
선언
#include <winnt.h>
LARGE_INTEGER m_CurrentTime;
LARGE_INTEGER m_LastTime;
LARGE_INTEGER m_CpuTick;
float m_fTimeDelta;
위와 같이 변수 선언을 해줍니다.
초기화
QueryPerformanceCounter(&m_CurrentTime);
QueryPerformanceCounter(&m_LastTime);
QueryPerformanceFrequency(&m_CpuTick);
위와 같이 현재시간과 마지막에 기록할 시간을 QueryPerformanceCounter로 가져오고 CPU클럭은 Frequency로 가져옵니다.
경과시간 연산
QueryPerformanceCounter(&m_CurrentTime); // 현재 시간 갱신
// 현재시간 - 갱신시간/cpu클럭
m_fTimeDelta = (float(m_CurrentTime.QuadPart) - float(m_LastTime.QuadPart)) / float(m_CpuTick.QuadPart);
m_LastTime = m_CurrentTime; // 마지막 시간 현재 시간으로 교체
m_fTimeDelta를 사용해 누적시켜 몇 초후를 알 수 있습니다.
감사합니다.
'Programming > 기타' 카테고리의 다른 글
[MFC] 리소스 뷰 보기 (0) | 2019.05.23 |
---|---|
[API] PathMatchSpec함수 (0) | 2019.04.03 |
2진수, 8진수, 16진수 정수 및 소수 바꾸기 (0) | 2018.12.12 |
[API] 타이틀바 관련 WM_NCLBUTTONUP 윈도우 버그 (0) | 2018.03.03 |
[API] 윈도우 타이틀 바 클릭 관련 (0) | 2018.03.02 |