我有一个控件,它使用 D3DImage 来托管 SharpDX DirectX9 表面,并允许用于平移、缩放和与世界对象交互,结果非常棒。性能实际上是惊人的一致 60fps,除非窗口被最小化并重新打开,或者用户锁定然后解锁屏幕。当窗口重新获得焦点时,fps 下降到大约 25-30fps。我可以通过将控件卸载并加载回其容器然后 BOOM,60fps 来“修复”该问题。
我使用设置为 10 毫秒的 DispatcherTimer 调用主渲染函数。之前,我使用的是 CompositionTarget.Rendering 事件,但性能不如使用 DispatcherTimer。我相当确定我正在正确处理丢失的资源。关于这些每秒丢失的帧有什么想法吗?
编辑: 我有同样的问题。不幸的是,进行自动设备重置并不能解决问题,但如果我有一个执行相同重置方法的按钮,那么我的 fps 会恢复正常。