首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CompositionTarget.Rendering里面我能做什么?

在CompositionTarget.Rendering里面我能做什么?
EN

Stack Overflow用户
提问于 2013-08-21 09:05:49
回答 2查看 4.7K关注 0票数 4

CompositionTarget.Rendering事件是构建游戏主循环的完美工具。它基本上以vsync (通常为60 Hz)的速度发射。

之前发生,即呈现组合树中的对象。在将动画和布局应用到组合树后,呈现事件将路由到指定的事件处理程序

每帧动画的文章对此做了进一步的解释。

注意,您的事件处理程序方法是在计算布局之后调用的。但是,您可以在事件处理程序方法中修改布局,这意味着在呈现之前将再次计算布局。

基于此,其处理程序中的代码规则如下:

  • 避免改变布局
  • 迅速返回

还有什么其他问题吗?,哪些非明显的操作会导致另一个布局传递?我在处理程序里面到底有多少时间?

EN

回答 2

Stack Overflow用户

发布于 2013-08-21 10:33:56

我认为它的主要目的是使没有计时器的动画,如那些使用物理元素,如重力,其中需要精确的定时。但是不是是游戏图形的好地方.WPF是,而不是,是一种游戏语言,严肃的游戏将,不,使用它,因为有太多的开销。如果您想编写一个.NET游戏,那么使用XNA

来自“释放的WPF控制开发:建立高级用户体验”一书:

一些读者可能会认识到这种方法与高端图形子系统(如DirectX )之间的相似之处。不要误以为CompositionTarget.Rendering是一个很好的注入点来创建一个基于WPF的游戏图形引擎.高端图形和超高帧速率并不是WPF动画这个特定方面的目标。 与DispatcherTimer方法类似,基于CompositionTarget.Rendering的动画也没有时间限制.但是,这些事件与呈现线程同步,导致比DispatcherTimer更流畅的动画。此外,也不需要启动和停止计时器,尽管您可能需要分离并附加事件处理程序以提高性能。

票数 4
EN

Stack Overflow用户

发布于 2016-02-01 10:58:15

在研究其他东西的时候,我偶然发现了这条忠告

如果发生下列任何操作,则再次调用布局传递过程:

  • 将子对象添加到集合中。
  • 将LayoutTransform应用于子对象。
  • 为子对象调用UpdateLayout方法。当使用影响测量安排的元数据标记的依赖项属性的值发生更改时,传递。

。。

更新而不是替换RenderTransform

您可以更新转换,而不是将其替换为RenderTransform属性值。在涉及动画的场景中尤其如此。通过更新现有转换,可以避免启动不必要的布局计算。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18353225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档