繁体   English   中英

如何在没有延迟的情况下在Windows中重新定位图形?

[英]How to reposition graphics in windows with no latency?

我正在尝试为Windows 8编写自定义光标图形。 我将它用于一个使用一个或任意数量的WiimotesWindows发送触摸输入的应用Windows ,这意味着我需要能够显示多个cursors 我不能使用cursor的构建来进行触摸,因为从远处观看时很难看到它们。

目前我正在为每个光标使用一个单独的透明窗口,我用DirectX绘制光标图形,但是为了实际重新定位cursor我使用win32方法SendMessageSetWindowPos将窗口移动到当前cursor位置。 这将导致重新定位的延迟几乎为零,但会使用不合理的处理时间。 在同时移动多个光标时,有时接近30%

我最初尝试的是绘制一个覆盖整个屏幕的透明窗口。 我已经尝试了一个WPF窗口,在Canvas上重新定位形状,并直接绘制到Desktop Window ManagerD3D 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM