1

我正在尝试为Windows 8. 我会将它用于使用一个或任意数量的Wiimotes发送触摸输入的应用程序Windows,这意味着我需要能够显示多个cursors。我不能使用内置cursor进行触摸,因为从远处观看时很难看到它们。

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

我最初尝试的是绘制一个覆盖整个屏幕的透明窗口。我已经尝试过WPF在 Canvas 上重新定位形状的窗口,并通过更改 transform 直接绘制到D3D DirectX实例Desktop Window Manager并重新定位matrixes。这些将导致一些非常烦人的毫秒延迟。

我如何在屏幕上绘制,cursor它会以低延迟和低移动CPU

4

1 回答 1

3

如果您使用的是 D3D/DirectDraw。

众所周知,双缓冲会导致输入延迟,而三重缓冲会导致更多。如果考虑到VSYNC,则该过程将阻塞多达 20 毫秒。

这意味着您将在输入事件之间有 20 毫秒的间隔。

双/三缓冲通常不是问题,因为 VSYNC 阻塞了渲染屏幕所需时间的 2000%。

因为通常渲染屏幕需要 1-2 毫秒,但等待 VSYNC 需要 17-24 毫秒。

例如 [c++]:
- 看看here.

于 2013-07-09T22:43:00.167 回答