WPF/Silverlight深度解决方案:(十七)GPU硬件加速下Silverlight超性能动画实现(上)

Silverlight3发布时,我和朋友都为其新增的GPU硬件加速功能激动不已,于是开始了肆无忌惮的连夜测试,可结果却实在让我们大失所望。是的,不论怎样修改代码都无法感觉到明显的性能提升。接下来的日子里, GPU这个词渐渐的远离了我的脑海。直至几天前,在与一位朋友交流后又再次让我萌生去测试GPU硬件加速在Silverlight4中效果的想法。真乃不测不知道,一测吓一跳。在最近Silverlight贬低声此起彼伏的日子里,我相信这篇文章及测试结果必将成为Silverlight开发中最为强劲的春哥!没错,信则永生!

既然要用GPU硬件加速,那么我们首先得知道它的定义原理及作用,大家可以参考MSDN的相关介绍,下面是我精简的核心内容:

GPU硬件加速是使用合成缓存将可视元素或元素的可视化树缓存为位图图面的行为。这可能为某些方案带来重大的性能改进。使用缓存合成,您可以在可视元素第一次呈现之后,将其缓存为位图。在将某个对象或对象树缓存为位图之后,当应用程序刷新时,它不再经过呈现阶段,而是只呈现缓存的位图。此类缓存位图交换可以充分利用用户 GPU 中提供的硬件加速功能,这种方法会大大改进某些方案的性能

接下来,要启动Silverlight中的GPU硬件加速首先必须进行参数设置:

1)Silverlight页面对象中加入参数<param name="EnableGPUAcceleration" value="true" />

2)为需要使用GPU加速的Uelement对象设置CacheMode值,比如:

  Xaml

        <MediaElement>

            <MediaElement.CacheMode>

                <BitmapCache RenderAtScale="0.8"/>

            </ MediaElement.CacheMode>

        </MediaElement>

C#

MediaElement mediaElement = new MediaElement () {CacheMode = new BitmapCache() { RenderAtScale = 0.8 } };

其中BitmapCache缓存中的RenderAtScale指明将对象呈现为已缓存位图时所使用的缩放比例。如果您将其指定为负数,则会引发错误。默认值为1。注意:RenderAtScale越小CPU消耗越少,内存占用越少,即性能越好!另外,RenderAtScale在介于01之间时,位图呈现为模糊状态。或许有朋友会问:游戏开发中我们是否能将之设置为0.8左右,不仅能模糊边缘且不失太多像素,又能提高性能,当然这还有待进一步测试。

最后,我们还得了解GPU硬件加速所适用的范围。针对目前的Silverlight4版本,我们可以对TransformRectangleGeometry OpacityVisibilityProjectionDeepZoom等对象进行GPU硬件加速。其中从Transform派生的对象包含:RotateTransformScaleTransformSkewTransformTranslateTransformMatrixTransformTransformGroup;而Projection (三维透视) 派生的对象包含PlaneProjectionMatrix3Dprojection

值得一提的是,SilverlightProjectionDeepZoomGPU硬件加速支持是在4版本中才新增的,从这点我们可以预测到Siverlight未来的发展趋势:Web3D硬件加速将在Silverlight后续版本中得到完美支持!

以上是关于SilverlightGPU硬件加速方面的理论精华浓缩,接下来是我专门为测试Silverligh4GPU硬件加速功能所编写的Demo与测评,我相信这才是本文最激动人心时刻的开始:

Demo在线演示地址:点击进入  下载地址

下面是我的测试环境及结果---------------------------------------

机器配置1:

这是一台目前市面上中高端配置电脑,分别对1000精灵进行测试:

环境:浏览器1280*768(全屏),单位图片150*150(像素)

测试结果(对象:1000精灵)

动画方式

GPU启动

OOB模式

FPS

CPU消耗(%)

内存占用(M)

动画效果

Canvas位移

1.32

82

74

 

18.72

21

169

 

 

75

55

 

 

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值