这几年,图形API领域十分热闹。首先是AMD Mantle,虽仅支持自家GCN架构显卡,但开创了访问硬件底层、提高执行效率的先河。微软DirectX 12与其有异曲同工之妙,而且兼容所有厂商硬件,走得也更远。
接下来,苹果提出了Metal,同样的底层图形与计算,但首次走入了移动领域(也即将支持OS X)。
传统的DirectX、OpenGL最大好处是广泛的硬件兼容性,但为此做出的牺牲就是过大的系统开销(Drivers Overhead),最大问题即绘制调用(Draw Call)吞吐能力大大降低。
啥是绘制调用?简单地说就是CPU发给GPU的指令,告诉它在一个画面帧中渲染一个物体(或物体的一部分)。由于近年来GPU性能发展速度远超CPU,后者已经有力不从心的感觉,急切需要从底层API上改善。
看看iPad平板机上,GPU性能已经是当年的180倍(虽然有水分),CPU还不到20倍。这和PC上是类似的。
AMD、微软、苹果显然都看到了这一点,各自提出了不同的解决方案,苹果的就是Metal,不过目前仅支持Imagination PowerVR Rogue架构,也就是A7、A8、A8X,或者说iPhone 5S、iPad Air及其后的设备。
Metal的效果到底如何呢?移动领域大名鼎鼎的图形测试工具GFXBench的开发商Kishonti Informatics,最近又推出了一个特别版的GFXBench Metal,就是将测试API从原来的OpenGL ES改成Metal,专门测试苹果设备。
这不是第一个Metal测试工具,但因为其权威性,更值得参考。接下来我们就用它考察一下多款iPhone、iPad在不同API下的表现差异。
注意:iPad Air 2发布之后,苹果似乎对A8X进行了持续优化,使其成绩比最初高了不少,iPhone 5S/6则没啥变化。为了统一方便对比,系统这里都是用iOS 8.3。
先来看最基本、理论性最强的系统开销测试(统一分辨率):
吓人吧?iPad Air 2 Metal下的行达到了OpenGL ES下的4.5倍,三款手机也都在4倍左右。简直神了!
当然这只是理论表现而已,还得看看更接近实际游戏的图形测试:
各款设备也都有提升,但幅度并不大,最好的iPad Air 2两个项目也分别只高了8.5%、11%。
你应该明白,硬件实力摆在那里,Metal只是进一步挖掘释放潜力而已,并不是什么“春药”,不可能让你的游戏帧率翻一番,有这样的表现已经可以了。
其实,Metal的真正目的是在移动设备上实现前所未有的画面逼真度,比如说Epic Games Zen Garden,iPad上以1440×1080分辨率、4xMSAA抗锯齿运行,可以同时展示3500个活动的蝴蝶,平均每帧有4000个绘制调用,这可是OpenGL ES做不到的。