※ 引述《fakeQQQ (Phakither)》之銘言:
寫太爛 再補充一篇說明@@
(1) (2) (3) (4) (5)
感應器→滑鼠內暫存器→電腦→ OS →Game
(1)到(2)這段 不是我們能控制的
機制是這樣的:
(2)存著一些"向量"
裡面有一組數字(x,y) 初始值是(0,0)
如果一個400cpi的滑鼠 往右移一吋 那就變成(400,0)
再往左移兩吋(400,0) + (-800,0) = (-400,0)
接下來電腦每隔一段時間 會跟滑鼠要一次這組數字 並重新歸零
也就是 1/125 秒時 電腦讀到(1200,800) 於是就往右1200個單位 往上800個單位
(2)→(3)就是第一個瓶頸
因為暫存器能存的數字是有限的 以8bit來說 範圍是-128~127的"整數"
也就是說 每次能送出的最大數字就是128(or 127)每秒收125次資料
所以一秒鐘加總起來的數字是128*125=16000 一秒最多能數出16000格
而400cpi的滑鼠 一吋有400格, 所以 一秒只能數40吋
如果你用800cpi的滑鼠 那滑鼠能傳給電腦的速度 最多就是每秒20吋 , 1600cpi剩10吋
滑鼠超出這個速度的話也沒用 因為USB這層沒辦法傳這麼多資料給電腦
也就是說 如果你用超強的滑鼠感應器 配上1600cpi ,8bit data depth ,
你以每秒40吋的速度移動滑鼠 ,電腦內指標會以每秒16000單位的速度移動
你的手加速到每秒60吋的話 電腦裡的滑鼠指標 還是只能以16000/sec
如果你再快 超出感應器極限 感應器就會偵測到有問題的值 滑鼠就會大暴走
大家在driver 或是控制台調整的 是倍率
預設情況(6/11 去掉加速) 滑鼠送出一個count時 游標也移動一格
以winXP為例:
1/11 0.03125 0.03125的意思是 OS每收到滑鼠給的一個count,指標移動0.03125格
2/11 0.0625 以下同
3/11 0.25
4/11 0.5
5/11 0.75
6/11 1
7/11 1.5
8/11 2
9/11 2.5
10/11 3
11/11 3.5
以上是除了感應器外的第一個瓶頸 也是前人超polling rate的原因
如果有興趣我再解釋最後那一個瓶頸的由來
--
寫太爛 再補充一篇說明@@
(1) (2) (3) (4) (5)
感應器→滑鼠內暫存器→電腦→ OS →Game
(1)到(2)這段 不是我們能控制的
機制是這樣的:
(2)存著一些"向量"
裡面有一組數字(x,y) 初始值是(0,0)
如果一個400cpi的滑鼠 往右移一吋 那就變成(400,0)
再往左移兩吋(400,0) + (-800,0) = (-400,0)
接下來電腦每隔一段時間 會跟滑鼠要一次這組數字 並重新歸零
也就是 1/125 秒時 電腦讀到(1200,800) 於是就往右1200個單位 往上800個單位
(2)→(3)就是第一個瓶頸
因為暫存器能存的數字是有限的 以8bit來說 範圍是-128~127的"整數"
也就是說 每次能送出的最大數字就是128(or 127)每秒收125次資料
所以一秒鐘加總起來的數字是128*125=16000 一秒最多能數出16000格
而400cpi的滑鼠 一吋有400格, 所以 一秒只能數40吋
如果你用800cpi的滑鼠 那滑鼠能傳給電腦的速度 最多就是每秒20吋 , 1600cpi剩10吋
滑鼠超出這個速度的話也沒用 因為USB這層沒辦法傳這麼多資料給電腦
也就是說 如果你用超強的滑鼠感應器 配上1600cpi ,8bit data depth ,
你以每秒40吋的速度移動滑鼠 ,電腦內指標會以每秒16000單位的速度移動
你的手加速到每秒60吋的話 電腦裡的滑鼠指標 還是只能以16000/sec
如果你再快 超出感應器極限 感應器就會偵測到有問題的值 滑鼠就會大暴走
大家在driver 或是控制台調整的 是倍率
預設情況(6/11 去掉加速) 滑鼠送出一個count時 游標也移動一格
以winXP為例:
1/11 0.03125 0.03125的意思是 OS每收到滑鼠給的一個count,指標移動0.03125格
2/11 0.0625 以下同
3/11 0.25
4/11 0.5
5/11 0.75
6/11 1
7/11 1.5
8/11 2
9/11 2.5
10/11 3
11/11 3.5
以上是除了感應器外的第一個瓶頸 也是前人超polling rate的原因
如果有興趣我再解釋最後那一個瓶頸的由來
--
All Comments