C# 合成目标。渲染延迟

C# 合成目标。渲染延迟,c#,wpf,input,rendering,user-input,C#,Wpf,Input,Rendering,User Input,我有一个应用程序订阅CompositionTarget.Rendering事件作为一种游戏渲染循环。如果我在回调中花费的时间少于约20毫秒,则一切正常,我的应用程序响应良好。然而,如果我花时间在这上面,我订阅的MouseMove、MouseWheel等输入事件几乎不会被调用,因此,尽管我的游戏仍然有30帧左右的帧速率,但输入响应变得非常滞后,无法使用 如前所述,它以大约30fps的速度渲染,但输入事件以大约5-10fps的速度渲染 我想这与WPF试图保持约60FPS 16ms有关?所以它限制了输

我有一个应用程序订阅CompositionTarget.Rendering事件作为一种游戏渲染循环。如果我在回调中花费的时间少于约20毫秒,则一切正常,我的应用程序响应良好。然而,如果我花时间在这上面,我订阅的MouseMove、MouseWheel等输入事件几乎不会被调用,因此,尽管我的游戏仍然有30帧左右的帧速率,但输入响应变得非常滞后,无法使用

如前所述,它以大约30fps的速度渲染,但输入事件以大约5-10fps的速度渲染

我想这与WPF试图保持约60FPS 16ms有关?所以它限制了输入调度器,希望重新获得一些性能

有没有办法禁用此节流功能?

作业的工具错误

你应该问问自己:

为什么我要使用一个没有专门为它设计的平台来开发游戏?

合成目标。渲染事件可以为一个帧触发多次,您可以扩展它,使其仅为每个帧触发一次。这有助于提高性能。阅读更多


虽然我同意这一点,但我认为这个问题仍然是一个很好的问题,它的答案可以教给我们很多关于WPF的知识。也许下面的阅读会让你相信这绝对是不可能的:我很感激它可能不是这项工作的正确工具。与其说是一个游戏,不如说是一个编辑。但是,你的回答还是没有多大帮助。正如我对@corentpane说的,只要看看那个链接,也许你会承认这是一个糟糕的方法。有帮助,但在我的测试中,注册的输入操作只增加了大约35%。