答复: [cpp] 关于固定刷新率
Jack
maxding at tom.com
Mon Apr 3 09:37:07 CST 2006
windows的消息是有优先级的,WM_TIMER属于最低优先级的消息,这就导致了两个层面
上的问题:
1) 一旦消息队列中有其它的消息还在处理,WM_TIMER就会被排后执行。
2) 最要命的是,WM_TIMER的产生也是优先级最低的,所以如果系统有别的事情在做,
时间点到的时候,就很有可能不产生WM_TIMER消息了。
所以你会觉得频率感觉上不一致了。
计算机上产生事件信号,对于软件一层来说有两种方式:轮询和中段。
使用GetTickCount本质上就是轮询,要想实现更准确的时间刻度,写中段程序吧。微妙
级的工业控制上,全部都是中断型的时间刻度了。毫秒级的,现在的机器,用
GetTickCount也就可以了,只不过编程的时候要小心,不用让working process太长,
阻挡了对GetTickCount的调用。
_____
发件人: cpp-bounces at codingnow.com [mailto:cpp-bounces at codingnow.com] 代表 你
后面的后面
发送时间: 2006年4月3日 07:12
收件人: C++ Discuss Group
主题: Re: [cpp] 关于固定刷新率
我都是用GetTickCount(),以前我们用的是计时器,但是发现游戏在不同的机器上运行
的效果差别很大,可能是因为对于同样的定时器时间间隔,WM_TIMER发生的频率在不同
的机器上不太统一,还望高手赐教。
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20060403/2821c694/attachment.html
More information about the Cpp
mailing list