鼠标点击操作实际上如何传递到显示器?【全流程图解】
鼠標點擊操作實際上如何傳遞到顯示器?下圖分解了管線的各個階段。請注意,雖然這些階段之間存在重疊,但它們一定會按照從左到右的順序開始和完成。
流程圖我們來分別介紹上圖中第二行的每個框。請注意,框的大小并未按比例。
為簡單起見,我們將重點關注鼠標,但以下所有內容均適用于連接到 PC 的各種 USB 外設。
-
鼠標硬件 – 在鼠標準備沿導線發送事件時,此硬件被定義為第一個電接觸點。在鼠標中,有幾個例程(如防抖)會給鼠標按鍵按下事件增加延遲。請注意,防抖例程很重要,它可防止您在不想點擊鼠標時點擊鼠標。這些額外的點擊通常稱為雙擊 – 由于防抖例程過于激進,此時會發送兩次點擊而不是一次。延遲并不是鼠標性能的唯一關鍵特性。
-
鼠標 USB 硬件 – 一旦完成防抖,鼠標必須等待下次輪詢,以便沿導線發送數據包。此時間會在 USB 硬件中反映出來。
-
鼠標 USB 軟件 – 鼠標 USB 軟件是指操作系統和鼠標驅動處理 USB 數據包所需的時間。
-
采樣 – 點擊操作根據鼠標的輪詢速率進入操作系統中,此時它們可能要等待下一次機會才能讓游戲進行采樣。該等待時間稱為采樣延遲。此延遲可以根據 CPU 頻率增大或縮小。
-
模擬 – 游戲必須不斷更新游戲世界的狀態。此更新通常稱為模擬。模擬包括更新動畫、游戲狀態和玩家輸入導致的變化等工作。模擬是將鼠標輸入應用于游戲狀態的階段。
-
渲染提交 – 隨著模擬確定清楚在下一幀中的哪個地方放置相關項,它將開始向圖形 API 運行時發送渲染作業。該運行時接著將渲染命令傳遞給圖形驅動。
-
圖形驅動 – 圖形驅動負責與 GPU 通信并向其發送命令分組。根據圖形 API 的不同,驅動可能會為開發者進行此分組,或者開發者可能要負責對渲染作業進行分組。
-
渲染隊列 – 在驅動提交要讓 GPU 執行的作業后,該作業會進入渲染隊列。渲染隊列的目的是:通過使緩沖區內始終放有需要 GPU 執行的作業,不斷向 GPU 提供作業。這有助于更大限度提高 FPS(吞吐量),但可能會帶來延遲。
-
渲染 – GPU 渲染與單個幀相關的所有作業所需的時間。
-
合成 – 根據顯示模式(全屏、無邊框、窗口化)的不同,操作系統中的桌面窗口管理器 (DWM) 必須提交另一些渲染作業,以合成特定幀的其余桌面部分。這可能會增加延遲。建議始終處于獨占全屏模式,以更大限度地減小合成延遲!
-
掃描輸出 – 合成完成后,最終的幀緩存就已經為顯示做好了準備。GPU會指示幀緩存已經可以被顯示并更換要讀取的幀緩存,以便進行掃描輸出。如果啟用了垂直同步,幀緩存中的這一“翻轉”操作將因為必須等待顯示器的垂直同步信號而暫停。準備就緒后,GPU 會根據顯示器的刷新率 (Hz),逐行將下一幀畫面送入顯示器。鑒于掃描輸出是刷新率函數,我們將其包含在“顯示延遲”中。
-
顯示處理 – 顯示處理是指顯示器處理傳入幀(掃描線)和發起像素響應所需的時間。
-
像素響應 – 這是指像素從一種顏色變為下一種顏色所需的時間。由于像素是真正的液晶,因此需要時間進行更改。像素響應時間可能取決于所需更改的強度,也將取決于面板技術。
總結
以上是生活随笔為你收集整理的鼠标点击操作实际上如何传递到显示器?【全流程图解】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux运行搜狗拼音,搜狗输入法 fo
- 下一篇: HDOJ 4889 Scary Path