原文链接:http://www.joshuagranick.com/blog/2012/10/04/nme-rendering-methods-benchmarked/
作者的测试是在一台Mac pro笔记本上分别分别针对本地目标和flash目标进行测试。
其分数是在稳定的60帧/秒速率下,同屏显示的精灵(bunnies)数量,数量越多性能越好。
本地目标采用GPU加速,而Flash则是软件渲染。对于Flash使用Stage3D进行硬件加速的测试,原文中也给出了一个链接:http://esdot.ca/site/2012/runnermark-scores-july-18-2012,从此文的分析,可以看出在绝大多数平台上,NME依然大比例胜出。
下面是测试结果:
本地目标(也就是cpp/mac)
-
35000 bunnies using drawTiles
-
10750 bunnies using drawTriangles (no alpha)
-
9250 bunnies using drawRect (no alpha, scale or rotation)
-
1750 bunnies using Bitmap
-
1750 bunnies using drawTiles (without batching)
-
700 bunnies using copyPixels (no alpha, scale or rotation)
Flash
-
11750 using copyPixels (no alpha, scale or rotation)
-
900 using Bitmap
-
900 using drawTriangles (no alpha)
-
100 using drawRect (no alpha, scale or rotation)
那么结论就是:
* 本地渲染方法中,毫无疑问最牛的就是NME独有的drawTiles方法,这个是经过硬件加速的。
* 另外的好消息是,drawTriangles和drawRect的本地运行速度也很不错,这样给我们带来更多的灵活性和兼容性,尤其是drawTriangles很多时候可以用来实现drawTiles无能为力的图形特效。
* 在基于软件渲染的Flash平台中,copyPixels是飞快的,不过copyPixels不能实现任何转换效果,应用场景很受限制。而在本地,则恰恰相反,copyPixels最慢,我想这是因为在本地copyPixels不能利用图形硬件加速,是纯cpu完成的,而其它几个方法在底层都是经过GPU加速的。
* Bitmap(也就是flash.display.Bitmap类)在两个平台的性能表现都居于中游,而且Bitmap是支持各种图形转换效果的,因此还是可以善加利用的。