Ans*_*iņš 5 wpf performance animation vsync
CompositionTarget.Rendering事件是构建游戏主循环的完美之选。它基本上以垂直同步的速率(通常为 60 Hz)触发。
在渲染合成树中的对象之前发生。将动画和布局应用到合成树后,渲染事件将路由到指定的事件处理程序。
每帧动画操作方法文章对此进行了更多解释。
Note that your event handler method is called after layout has been computed. However, you can modify layout in your event handler method, which means that layout will be computed once more before rendering.
Based on that, the rules for code inside its handler are:
What other gotchas are there? What non-obvious actions cause another layout pass? How much time exactly do I have inside the handler?
我认为它的主要目的是启用无计时器的动画,例如那些使用重力等物理元素的动画,其中需要精确的定期计时。然而,这对于游戏图形来说并不是一个好地方...WPF 不是一种游戏语言,严肃的游戏将无法顺利运行,因为它的开销太大。如果您想编写 .NET 游戏,请使用XNA。
从《WPF 控件开发释放:构建高级用户体验》一书中:
一些读者可能会认识到这种方法与 DirectX 等高端图形子系统之间的相似之处。不要将 CompositionTarget.Rendering 误认为是创建基于 WPF 的游戏图形引擎的良好注入点。高端图形和超高帧速率不是 WPF 动画这一特定方面的目标。
与 DispatcherTimer 方法类似,基于 CompositionTarget.Rendering 的动画也不受时间限制。但是,这些事件与渲染线程同步,从而产生比 DispatcherTimer 更平滑的动画。此外,无需启动和停止计时器,尽管您可能必须分离和附加事件处理程序以提高性能。
| 归档时间: |
|
| 查看次数: |
5284 次 |
| 最近记录: |