在我看来,在某些情况下,从鼠标读取更高精度的值可能很有用,而不仅仅是当前屏幕分辨率上的一系列离散像素坐标。显然在 GUI 中不需要这样做,但对于某些游戏来说,将其与屏幕分辨率相关联可能根本没有任何意义。
为什么我们被迫将其读取为像素坐标而不仅仅是原始模拟值?
在我看来,在某些情况下,从鼠标读取更高精度的值可能很有用,而不仅仅是当前屏幕分辨率上的一系列离散像素坐标。显然在 GUI 中不需要这样做,但对于某些游戏来说,将其与屏幕分辨率相关联可能根本没有任何意义。
为什么我们被迫将其读取为像素坐标而不仅仅是原始模拟值?
至少在 Windows 下,对于支持高分辨率报告的设备,您可以检索更高分辨率的坐标,从 0 到 0xffff,而不是将鼠标位置转换为屏幕坐标
检索高分辨率点。在 x 和 y 坐标中,点的范围可以从 0 到 65,535 (0xFFFF)。这是由绝对坐标定位设备(如绘图板)提供的分辨率。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646259(v=vs.85).aspx
根据这里的一个答案,可以使用非标准缩放在 Mac 上实现亚像素分辨率:
该问题的答案均未被接受,但可能值得进一步调查。
Windows 使用WM_INPUT
and WM_MOUSEMOVE
,以及 DirectInput 和 XInput;
默认情况下,它只支持WM_MOUSEMOVE
完全基于整数的主 Windows GUI,但如果您要同时实现WM_INPUT
和WM_MOUSEMOVE
,您可以以亚像素精度移动鼠标光标。
一些程序显然会充分利用这一点,例如第一人称射击游戏、网络浏览器(缩放页面和滚动条)和图像编辑程序(例如 GIMP、Adobe Photoshop/Illustrator、Paint.NET 等... )
另外,让鼠标同时发送WM_INPUT
和WM_MOUSEMOVE
,并让 Windows shell 本身支持它,通常会使鼠标移动看起来更流畅;为了充分利用这一点,您可能需要修改鼠标光标在 Windows 中的工作方式,以便可以实现 ClearType 字体渲染的变体,使用有符号距离场和/或可缩放矢量图形来确定光标的边缘(这也可以允许其他视觉效果,例如适当的运动模糊、照明等)。
编辑:在事实发生近两年后,我才发现有人在我生日那天更新了我帖子的格式。厉害了,谢谢大佬
因为鼠标不提供模拟或浮点值。那已经是翻译了。
[编辑] 有人愿意评论 -1 吗?