上周,我了解到Windows Phone上的Silverlight使用“compositor”线程来缓存位图和动画,并独立于UI线程运行它们。即使UI线程被阻止,这也允许动画顺利运行。
我的问题是:为什么这只针对WP7,而不是Silverlight(网络)或WPF引入?
答案 0 :(得分:4)
微软最近关注的重点是Silverlight for Windows Phone 7(成败时间),因此他们已经为手机增加了必备功能,这些功能现在将出现在Silverlight的下一个版本中。基本上任何使手机看起来快速/平滑/良好的东西。
我听到Silverlight(浏览器版)中即将推出的功能的具体提及:“在后台线程上运行动画故事板”。那是在最近的视频中(遗憾地丢失了链接)。
答案 1 :(得分:2)
compositor(渲染)线程在Windows Phone 7设备上运行GPU。
作为一种资源受限的设备,有必要使用所有很酷的动画来让这些东西在GPU上运行,并使用位图缓存图像。我认为这是Windows Phone 7平台团队不可避免的设计选择,可以实现Windows Phone 7设备上可用的视觉效果。
当然,也许在适当的时候也可能与WPF和Silverlight有关。
所以它不是提供另一个线程来减轻CPU的负担。这是管理GPU的一个线程。 UI线程在CPU上运行,处理一般的UI交互和所有其他非GPU代码。
答案 2 :(得分:2)
要让合成器线程专门在GPU上运行,要求运行该软件的硬件具有GPU,并且该任务的功能非常强大。
WP7设备是第一个可以保证运行Silverlight的每个硬件都有基线硬件要求的设备。
如果Silverlight尝试这样做,如果运行的硬件没有GPU,则必须将合成器移到CPU上。如果那个CPU是单核,那么在某些机器上,底层代码就会变得更加复杂,从而无法获得性能提升。