为什么鼠标光标比应用程序绘制得更快?

时间:2018-02-16 18:59:30

标签: windows winapi rendering

我注意到的事情之一(至少在Windows上),鼠标光标的绘制延迟远远低于标准的Windows元素。

这方面的一个很好的例子就是开始在桌面上拖动。您可以很容易地注意到拖动矩形明显滞后于光标。

我的第一个问题是:为什么会这样?

我无法想象画一个矩形比绘制光标贵得多。当然不是一两帧。

我的第二个问题是,是否有可能将一个应用程序渲染1:1与光标输入相匹配?

一个很好的用例就是这个选择矩形,或拖动可拖动项目的预览。两者都远远落后于OS鼠标指针(独立于所使用的任何框架或库)。

1 个答案:

答案 0 :(得分:3)

使用选择矩形在桌面上选择图标在我的系统上没有那么慢(DWM打开),它有点滞后但不足以让我真正关心。

“拖动时显示窗口内容”选项一直很慢,这就是为什么它在旧版Windows中默认不启用。

另一方面,鼠标光标可以由硬件直接渲染。也就是说,Windows将光标图像发送到您的图形卡,然后Windows只需要告诉图形卡光标位置,这比调整窗口大小和绘制窗口时所涉及的所有消息和用户/内核上下文切换要快得多。鼠标驱动程序可能使用硬件中断/定时器,其优先级高于普通软件。

您可以尝试使用registry hack禁用硬件游标,但是win32k中的HID /鼠标驱动程序和原始输入线程仍将具有比您的应用程序更高的优先级。