0
我有一个使用WPF UI的3D渲染应用程序。渲染本身是用本地代码完成的,但交互来自WPF。WPF鼠标事件更新性能
现在,我已经看到WPF的鼠标事件以非常不规则的间隔被触发,并且在某些情况下,我从来没有得到任何事件。这似乎与应用程序使用的CPU数量有关。
通过使用低级别的Win32 GetCursorPos和类似的方法,我可以得到更好的响应,但是这与WPF UI元素交互混淆。
有没有办法控制WPF消息处理循环的优先级,或通过其他方式确保我得到我需要的鼠标事件?
另外,我可以做一个低级别的鼠标处理程序使用Win32调用,以某种方式将事件注入WPF?
您需要多少鼠标事件?我怀疑真正的问题是,你试图在UI线程中每帧计算太多其他东西,而不是利用延迟处理 – MickyD
渲染器以每秒60帧的速度运行,但如果我得到10-20个鼠标事件,我很幸运每秒。这意味着即使渲染器运行平稳,使用鼠标平移视图也会看起来不稳定。我有充足的周期来备用每一帧,这似乎是WPF事件处理程序饿死了。 – tseval
WPF和Windows是应用程序消息队列中鼠标消息的最终来源,它不仅能够提供每秒超过60条消息的鼠标更新。我真的怀疑你在渲染器中获得60 FPS,如果平移看起来不稳定**,无论你获得什么样的鼠标更新。同样,很明显,您每帧执行的计算量过多,或者您的绘图代码效率低下。 – MickyD