6

阅读这篇文章“利用高清鼠标移动” - http://msdn.microsoft.com/en-us/library/windows/desktop/ee418864(v=vs.100).aspx,我想应该使用原始输入从输入设备获得更精确的读数。

文章指出 WM_MOUSEMOVE 的主要缺点是它受限于屏幕分辨率。

仔细检查 RAWMOUSE 结构后,我发现 lLastX 和 lLastY 是长值,您可以通过它们获得增量。

对我来说,它看起来像 WM_MOUSEMOVE 和 WM_INPUT 是相同的,除了 WM_INPUT 你没有应用加速度(指针弹道学)。

WM_MOUSEMOVE 和 WM_INPUT 是否都受限于屏幕分辨率?

如果是这样,使用 WM_INPUT 有什么好处?

4

2 回答 2

11

RAWMOUSE 根据鼠标的原始分辨率为您提供鼠标的逻辑坐标。

也就是说,您会看到鼠标的实际移动。

Windows 将使用鼠标速度和加速度(弹道)设置来更新光标位置。因为当然这两者没有联系 - 必须解释鼠标的明显移动以生成光标移动,否则如何支持多个鼠标?

如果您希望控制指针,据我所知,没有理由重复 Windows 鼠标弹道计算。就让windows来做吧。因此,为了控制指针,您应该只使用 WM_MOUSEMOVE。也就是说,除非您希望在应用程序中禁用鼠标加速设置。

但是,如果您想控制玩家的 POV(视点),或者使用鼠标来控制游戏中的物体(例如飞船飞行轭),那么 RAWMOUSE 数据可以让您尽可能地了解鼠标的移动,您可以实现自己的算法将其转换为飞行轭/POV 运动。

于 2012-05-05T13:35:52.467 回答
2

使用它的主要好处和理由是,使用 rawInput 您可以使用两个或更多鼠标。目前,我编写了一个小型游戏原型,旨在由两个玩家用两只鼠标/鼠标玩 - 它更复杂,但它可以工作,而且还不错,因为我确实需要链接外部库。

于 2012-09-06T11:02:33.937 回答