[英]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.