|
|
本帖最后由 xmiangui 于 2011-2-27 01:01 编辑
无责任猜测:CF的DirectX用的是缓冲队列模式,然后把缓冲弄得太大。这样回报率一高就会有鼠标指令队列积压,因为接口会一股脑把缓冲队列里所有的鼠标数据扔给游戏处理,这就会造成延迟。而一般游戏用的是实时模式或者是比较小的缓冲队列,也就是说接口只从堆栈缓冲队列里给出一个或比较少的几个最新的数据包给游戏。后者对鼠标相应的速度就会快上很多。
然后这个延迟取决于实际运行程序的时候,每秒钟对鼠标缓冲队列里的数据的处理能力。再加上人本身对反应时间延迟的敏感程度。所以就会有人(或者有的电脑上)觉得500、1000Hz回报率也没什么延迟,其他人则觉得打不准,有很大延迟。
举个例子,普通Windows应用程序用的接口也是基于缓冲队列的(只是速度更慢)。然后电脑卡的时候可能会有这种经历:发现鼠标点击按钮或者别的什么东西当时没有反应,但是过了几秒按钮就被按下了。因为刚才鼠标点击的时候,操作系统在卡机所以按键没有反应,等到卡完了,按键开始响应刚才缓冲队列里的命令,产生被按下的效果。
不过我不怎么懂DirectX编程,这只是一种猜测。 |
|