为什么不能将鼠标坐标作为浮点值获取?

Ste*_*len 6 floating-point mouse

在我看来,在某些情况下,从鼠标中读取更高精度的值,而不仅仅是当前屏幕分辨率上的一系列离散像素坐标,这可能很有用.显然,在GUI中没有必要这样做,但对于某些游戏,将它与屏幕分辨率完全联系起来甚至没有任何意义.

为什么我们不得不将其作为像素坐标而不仅仅是原始模拟值读取?

Eri*_* J. 7

至少在 Windows 下,对于支持高分辨率报告的设备,您可以检索从 0 到 0xffff 的更高分辨率坐标,而不是将鼠标位置转换为屏幕坐标

检索高分辨率点。x 和 y 坐标的点范围都可以是从 0 到 65,535 (0xFFFF)。这是绝对坐标定位设备(例如绘图板)提供的分辨率。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646259(v=vs.85).aspx

根据此处的一个答案,可以使用非标准缩放在 Mac 上实现子像素分辨率:

OSX 上的高分辨率和高帧率鼠标坐标?(或者其他解决方案?)

该问题的答案均​​未被接受,但可能值得进一步调查。


Ama*_*ind 6

Windows 使用WM_INPUTWM_MOUSEMOVE,以及 DirectInput 和 XInput;

默认情况下,它仅支持WM_MOUSEMOVE主 Windows GUI,它完全基于整数,但如果您要同时实现WM_INPUTWM_MOUSEMOVE,您可以以子像素精度移动鼠标光标。

有些程序显然会充分利用这一点,例如第一人称射击游戏、Web 浏览器(缩放页面和滚动条)和图像编辑程序(例如 GIMP、Adobe Photoshop/Illustrator、Paint.NET 等) )

另外,让鼠标同时发送WM_INPUTWM_MOUSEMOVE,并且 Windows shell 本身支持它,通常会使鼠标移动看起来更流畅;为了充分利用这一点,您可能需要修改鼠标光标在 Windows 中的工作方式,以便可以实现 ClearType 字体渲染的变体,使用有符号距离场和/或可缩放矢量图形来确定光标的边缘(这也可能允许其他视觉效果,例如适当的运动模糊、照明等。


编辑:我刚刚发现,差不多两年后,有人在我生日那天更新了我帖子的格式。太棒了,谢谢老兄。