|
|

本帖最后由 xmiangui 于 2010-11-3 19:18 编辑
DPI显然和显示器有关系,本来就是个打印/显示参数。
鼠标的那个严格来说叫CPI,和显示器没关系。
Windows鼠标速度不是点对点的移动或者跳点,而是根据鼠标回报的Counts计算每个采样周期(鼠标回报率)鼠标的速度值,然后越高的鼠标速度就乘以越高的倍率,计算采样周期中(屏幕的刷新率)屏幕上指针的移动的Dots(这样就从鼠标的CPI对应到了显示器的CPI)。而不是直接去拿鼠标的CPI 1:1乘以个倍率去对屏幕的DPI。
显然上一句话中的两个采样周期是不同的概念,鼠标回报给操作系统的采样周期是USB回报率,屏幕的采样周期是屏幕的刷新率。
导致CPI和DPI是一个相近并且容易混淆的概念(我自己平时也懒的分辨),但因为这两者不在同一个时间参照系中,所以鼠标Counts和屏幕Dots不会直接对上,也不会因为鼠标速度高导致必然的跳点。
其实还有个采样周期就是鼠标传感器的Frame Rate也就是刷新率,比如IE引擎是9000FPS,但因为根本到不了操作系统(就好比鼠标的Counts其实也到不了显示器的Dots)所以这里忽略。
所以,虽然提高Windows鼠标速度的结果的确是无法做到精确点击(就好比数码相机的数字变焦),会需要人用更多的精力去进行精确移动,但这和跳点没有必然的联系。
或者我们换个角度想想:
从鼠标传感器到鼠标USB接口回报给操作系统的CPI,其中已经存在了一级转换。即具体的鼠标CMOS 长x高的分辨率和Frame Rate刷新率被转换成了一种叫做Mickey的表示CPI中Counts的数据。
同样的,从操作系统接收到鼠标Mickey到屏幕上指针位移也发生了一次转换,从表示CPI中Counts的Mickey转换成了屏幕上实际指针的Dots移动。而这步总是被人混淆为鼠标的DPI直接等比例变成了屏幕的DPI,实际上和上一步的转换是类似的。
三者(传感器 - USB回报数据 - 屏幕指针像素位移)虽然都是时间参照系上的位移量(也就是速度),但是参照系各不相同,第一个是传感器刷新率(比如9000FPS),第二个是USB口回报率(比如125Hz),第三个是屏幕上的像素点(比如移动了96个像素)。
如果说三者是简单的点对点的线性关系(1:N),那么除非所有设备都是同步运行的(就像最早的计算机),不然根本做不到精确的鼠标定位。实际上这也是一种异步技术,不管什么芯片的什么鼠标,也不管你电脑上跑的是啥操作系统,更不用管你是CRT还是LCD显示器。只要接口规范支持,就能把设备插在一起用。 |
|