通过上一节的测评,相信大家已经对Silverlight中利用GPU硬件加速来提升性能有了深刻印象。Silverlight游戏开发中,我们需要综合运用多种形式的动画及相关图形处理技巧,此时如果能充分合理的利用GPU硬件加速功能,配合上性价比最高的功能实现方式,这将为大家打造帝王级高性能RIA网页游戏奠定坚实的基础。
游戏中的主角是精灵,出现得最多最频繁的同样是精灵;于是,我在上一节的基础上重新修改并制作了全新的Demo。该Demo中集合了目前主流的Silverlight游戏精灵配置环境,以下是我测试的具体细节:
机器配置:
还是上一节中那台测试机器,针对游戏中精灵的不同配置在是否启动GPU硬件加速下对整体性能的影响测评如下:
1)不同移动方式对性能的影响
GPU加速 |
移动方式 |
动作方式 |
切换间隔 |
移动速度 |
精灵数量 |
精灵尺寸 |
FPS |
CPU消耗(%) |
内存占用(M) |
否 |
Storyboard |
轮换图片 |
150 |
4 |
200 |
150*150 |
4.48 |
84 |
65 |
是 |
Storyboard |
轮换图片 |
150 |
4 |
200 |
150*150 |
46.82 |
55 |
86 |
否 |
DispatcherTimer |
轮换图片 |
150 |
4 |
200 |
150*150 |
4.08 |
88 |
65 |
是 |
DispatcherTimer |
轮换图片 |
150 |
4 |
200 |
150*150 |
42.31 |
55 |
91 |
虽然从数据上得到的Storyboard移动方式与DispatcherTimer移动方式在性能上几乎无异,但是实际运行时我们会发现Storyboard比DispatcherTimer移动起来更加平滑流畅,特别是在GPU硬件加速下。
2)不同切帧方式对性能的影响
Silverlight中主流的动画实现方式有图片轮换及矩形截取,它们所需的素材布局结构也不同,类似如下(如对此两种方式的素材及实现逻辑代码感兴趣的朋友可下载本节源码自行研究):
GPU加速 |
动作方式 |
移动方式 |
切换间隔 |
移动速度 |
精灵数量 |
精灵尺寸 |
FPS |
CPU消耗(%) |
内存占用(M) |
否 |
图片轮换 |
Storyboard |
150 |
4 |
200 |
150*150 |
4.48 |
84 |
65 |
是 |
图片轮换 |
Storyboard |