【问题标题】:CompositionTarget.Rendering LagCompositionTarget.Rendering 滞后
【发布时间】:2019-10-13 19:26:42
【问题描述】:

我有一个应用程序订阅 CompositionTarget.Rendering 事件作为一种游戏“渲染循环”。如果我在回调中花费的时间少于约 20 毫秒,那么一切都很好,并且我的应用程序是响应式的。然而,如果我花时间在这上面,我订阅的输入事件(MouseMove、MouseWheel 等)不会被调用得那么频繁,所以虽然我的游戏仍然有 30fps 左右的下降帧速率,输入响应变成真的很慢而且无法使用。

如前所述,它以大约 30 fps 的速度呈现,但输入事件以大约 5-10 fps 的速度完成。

我认为这与试图维持 ~60FPS (16ms) 的 WPF 有关?所以它会限制输入调度程序以恢复一些性能?

有没有办法禁用这种“节流”?

【问题讨论】:

标签: c# wpf input rendering user-input


【解决方案1】:

CompositionTarget.Rendering 事件可以针对单个帧触发多次,您可以将其扩展为每帧仅触发一次。这有助于提高性能。阅读更多here

an implementation here.

【讨论】:

    【解决方案2】:

    错误的工作工具

    你应该问自己:

    为什么我要使用没有明确设计的平台来开发游戏?

    【讨论】:

    • 虽然我同意这一点,但我认为这个问题仍然是一个很好的问题,它的答案可以教会我们很多关于 WPF 的知识。
    • 也许下面的阅读会让你相信这绝对是不可能的:docs.microsoft.com/en-us/dotnet/framework/wpf/…
    • 我很感激它可能不是适合这项工作的工具。它实际上更像是一个编辑器而不是一个游戏。但是,您的回答仍然不是很有帮助。
    • 正如我对@CorentinPane 所说,只要阅读该链接,您可能会承认这是一种不好的方法。
    猜你喜欢
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多