2011-05-17 100 views
-1

我一直在试图为我的游戏创建一个计时器,并且我听说过QueryPerformanceCounter和QueryPerformanceFrequency。有人能解释一下如何用这些来计算游戏循环中的时间/ fps /滴答?C++ QueryPerformanceCounter和QueryPerformanceFrequency

+0

你应该知道,BIOS/HAL在许多PC不打扰同步跨越核/ CPU上的计数器,所以在不同的内核采集的样本不仅反映经过的时间,而且恒定的增量。通过一些工作,您可以在程序启动时计算这些delta,并使用CPUID指令更正时序。此外,使用这些时钟周期计数器改变其速度的CPU会自适应地阻止时序。 – 2011-05-17 06:55:24

+1

http://stackoverflow.com/questions/1739259/how-to-use-queryperformancecounter – DuckMaestro 2012-01-23 08:13:27

回答

11

Microsoft支持拥有知识库文章明确这一点:

How To Use QueryPerformanceCounter to Time Code

基本上你使用QueryPerformanceCounter之前,你想不想来一次活动后获得高分辨率定时器的值。

然后使用QueryPerformanceFrequency来获得每秒的滴答数。将时间差值除以该值以将该值转换为秒。

+0

嘿..缺乏研究... ...我不知道如何谷歌获得结果,我赢了...谢谢寻求帮助 – 2011-05-19 08:52:31

5
LARGE_INTEGER m_liPerformanceFrequency; 
QueryPerformanceFrequency(&m_liPerformanceFrequency); 

//... 

LARGE_INTEGER liPerformanceCount; 
QueryPerformanceCounter(&liPerformanceCount); 
double dTime = double(liPerformanceCount.QuadPart)/double(m_liPerformanceFrequency.QuadPart); 
相关问题