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

Floating point 为什么不能将鼠标坐标作为浮点值获取?,floating-point,mouse,Floating Point,Mouse,在我看来,在某些情况下,从鼠标读取更高精度的值可能会很有用,而不仅仅是当前屏幕分辨率上的一系列离散像素坐标。显然,在GUI中不需要这样做,但对于某些游戏来说,将其与屏幕分辨率联系起来可能根本没有任何意义 为什么我们必须将其读取为像素坐标而不是原始模拟值?对于支持高分辨率报告的设备,至少在Windows下,您可以检索更高分辨率的坐标,从0到0xffff,而不是转换为屏幕坐标的鼠标位置 检索高分辨率点。点数的范围从零到65535 (0xFFFF)在x坐标和y坐标中。这是提供的决议 通过绝对坐标定点设

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


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

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

检索高分辨率点。点数的范围从零到65535 (0xFFFF)在x坐标和y坐标中。这是提供的决议 通过绝对坐标定点设备,如绘图板

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


这两个问题的答案都没有被接受,但可能值得进一步调查。

这取决于所使用的语言和环境。
例如,在Pharo或Squeak smalltalk下运行的图形用户界面使用浮点数作为坐标

这在此处列出


Morphic最初是在

中实现的,因为鼠标不提供模拟值或浮点值。那已经是翻译了


[编辑]有人想对-1发表评论吗

Windows使用
WM_输入
WM_MOUSEMOVE
,以及DirectInput和XInput

默认情况下,它只支持主Windows GUI的
WM_MOUSEMOVE
,该GUI完全基于整数,但如果同时实现
WM_INPUT
WM_MOUSEMOVE
,则可以以亚像素精度移动鼠标光标

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

另外,让鼠标同时发送
WM_INPUT
WM_MOUSEMOVE
,并让Windows shell在本机支持它,将使鼠标移动总体上看起来更平滑;为了充分利用这一点,您可能希望修改鼠标光标在Windows中的工作方式,以便可以实现ClearType字体渲染的变体,使用有符号的距离字段和/或可缩放的矢量图形来确定光标的边缘(这也可能允许其他视觉效果,如适当的运动模糊、照明等)



编辑:事实发生将近两年后,我才发现有人在我生日那天更新了我帖子的格式。棒极了,谢谢你,伙计。

另一方面,这并不能提供更高的精度。鼠标提供的数据密度比屏幕高。为了充分利用鼠标的精度,在屏幕上渲染鼠标时,需要缩小鼠标的坐标。这要么导致浮点数,要么导致截断/舍入。OP和我都赞成浮动。尽管如此,它似乎相当苛刻,这一路到-3没有任何评论。。。