gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:53:54 25 4
gpt4 key购买 nike

我正在尝试为 Windows 8 编写自定义光标图形代码.我会将它用于使用一个或任意数量的 Wiimotes 的应用程序将触摸输入发送到 Windows ,这意味着我需要能够显示多个 cursors .我无法使用 cursor 中的构建用于触摸,因为从远处看时很难看到它们。

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

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

我如何在屏幕上绘图,cursor它将以低延迟和低 CPU 移动?

最佳答案

如果您使用的是 D3D/DirectDraw。

双缓冲 已知会导致输入延迟,三重缓冲会导致更多。如果您将 VSYNC 考虑在内,那么该过程甚至会阻塞多达 20 毫秒。

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

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

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

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

关于c# - 如何在没有延迟的情况下在 Windows 中重新定位图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17559316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com