火狐以某种方式与我的计时器交互?这太疯狂了^^

Firefox interacts with my timers somehow ?!?! This is crazy ^^

本文关键字:疯狂 交互 计时器 方式 我的 火狐      更新时间:2023-10-16

我有一个问题与定时器在我的win32 c++ DirectX游戏(一个小演示)。我使用"timeGetTime"来获取当前时间,并使用它来播放动画或通过使用增量时间进行逻辑(我还在动画时使用常量进行规范化)。我有时使用低至2毫秒的滴答率。在处理时间时,我只使用ulong。游戏运行得很好,但如果我启动Mozilla Firefox并启动游戏,那么游戏的速度就会非常快(动画和游戏逻辑)。就像快进一样。奇怪的是,似乎有几个计时器不受此影响。有人知道吗?Firefox和我的定时器之间有什么联系?退出后,Firefox会保持不变,但过了一段不确定的时间或重启电脑后,它会恢复正常。任何建议都是感激的,即使这是一个很长的机会。谢谢你。

是TimeGetTIme的默认精度为5ms或更大

这可以通过调用timeBeginPeriod和timeEndPeriod函数来改变。更改TimeGetTime的精度会影响所有正在运行的应用程序。我猜火狐正在调用那些影响你应用程序的函数。

改为使用QueryPerformanceCounter/queryperformancfrequency方法,而不是提供高分辨率定时,并且不会受到TimeGetTime问题的影响。

编辑:有几个链接向您展示如何使用这些函数。

http://www.programmersheaven.com/mb/windows/311148/311148/using-queryperformancecounter/

还要注意MSDN页面上的注释:http://msdn.microsoft.com/en-us/library/ms644904 (v = vs.85) . aspx