[英]How to reposition graphics in windows with no latency?
我正在嘗試為Windows 8
編寫自定義光標圖形。 我將它用於一個使用一個或任意數量的Wiimotes
向Windows
發送觸摸輸入的應用Windows
,這意味着我需要能夠顯示多個cursors
。 我不能使用cursor
的構建來進行觸摸,因為從遠處觀看時很難看到它們。
目前我正在為每個光標使用一個單獨的透明窗口,我用DirectX
繪制光標圖形,但是為了實際重新定位cursor
我使用win32
方法SendMessage
和SetWindowPos
將窗口移動到當前cursor
位置。 這將導致重新定位的延遲幾乎為零,但會使用不合理的處理時間。 在同時移動多個光標時,有時接近30%
。
我最初嘗試的是繪制一個覆蓋整個屏幕的透明窗口。 我已經嘗試了一個WPF
窗口,在Canvas上重新定位形狀,並直接繪制到Desktop Window Manager
的D3D
DirectX
實例,並通過更改變換matrixes
重新定位。 這些將導致一些非常煩人的毫秒延遲。
如何在屏幕上繪圖,一個cursor
會以低延遲和低CPU
?
如果你正在使用D3D / DirectDraw。
已知雙緩沖會導致輸入滯后,三重原因甚至更多。 如果考慮VSYNC,那么該過程將阻塞甚至多達20毫秒。
這意味着輸入事件之間會有20ms的差距。
Double / Tripple緩沖通常不是問題'因為VSYNC阻止渲染屏幕所需的時間為2000%。
因為渲染屏幕通常需要1-2毫秒,但是等待VSYNC需要17-24毫秒。
例如[c ++]:
- 看看這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.