Silverlight 3引入了GPU加速的特性,该功能默认为禁用。启用该功能需要:
1. 在Silverlight plug-in上设置 <param name="enableGPUacceleration" value="true" /> 或使用代码
Application.Current.Host.Settings.
EnableGPUacceleration= True;
2.在类型为UIElement的控件上设置 CacheMode
=
"BitmapCache" - 所谓GPU加速是基于GPU缓存了一些UI元素,节省了cpu的耗用
如何知道哪些控件被缓存?在Silverlight plug-in上设置 <
param
name
=
"enableCacheVisualization"
value
=
"true"
/> 后程序界面中会有颜色变化:
1. 红色表示没有被缓存
2. 正常颜色表示被缓存
3. 绿色表示没有设置 CacheMode
=
"BitmapCache",但被自动缓存
由于GPU加速的原理是缓存,那么频繁变动的UIElement就不适宜使用,因为缓存的频繁更新反而会带来性能损耗。但是MideaElement例如视频使用GPU加速可以实现性能提高 :
图:启用缓存的视频
但是perspetive 3d效果的视频 则不可以:
图:右侧视频使用了Pespective 3d效果,显示为红色,没有缓存
GPU加速的限制:
1. GPU 加速仅支持如下动画: Scale,Rotate,Changing Opacity,Clipping (only if clip is rectangular),其他则不支持,例如 Perspective 3d效果的动画。
2. GPU显存不足,Silverlight会默认使用cpu来实现缓存,这反而会增加cpu的负担 - 目前Silverlight还不支持查询GPU缓存大小的方法,仅提供了Analytics.GpuCollection 属性。
3. 需要支持DirectX(Windows) 或OpenGL(Mac)的显卡,且Mac上仅支持全屏模式
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。