C ++ QueryPerformanceCounter和QueryPerformanceFrequency

时间:2011-05-17 06:18:43

标签: c++ game-loop

我一直在尝试为我的游戏创建一个计时器,我听说过QueryPerformanceCounter和QueryPerformanceFrequency。有人可以解释一下这些如何用于计算游戏循环中的时间/ fps /滴答?

2 个答案:

答案 0 :(得分:11)

Microsoft支持有一篇专门针对此的知识库文章:

How To Use QueryPerformanceCounter to Time Code

基本上,您使用QueryPerformanceCounter在想要计时的事件之前和之后获取高分辨率计时器值。

然后使用QueryPerformanceFrequency获取每秒的滴答数。将时差除以此值,将值转换为秒。

答案 1 :(得分:5)

LARGE_INTEGER m_liPerformanceFrequency;
QueryPerformanceFrequency( &m_liPerformanceFrequency);

//...

LARGE_INTEGER liPerformanceCount;
QueryPerformanceCounter( &liPerformanceCount);
double dTime = double(liPerformanceCount.QuadPart)/double(m_liPerformanceFrequency.QuadPart);