2012-03-22 62 views
8

我经常被告知,CSS 3D变换在移动Safari中是硬件加速的,这让我想知道这样做是否意味着2D变换不是?我可以不考虑为什么他们不会这样做,因为他们基本上都可以作为3D转换来实现,但我想确切知道。Mobile Safari中的2D变换硬件加速了吗?

如果事实证明2D变换不是硬件加速的,那么为什么会非常感激任何洞察力。

回答

15

你是对的,CSS 2D转换不是硬件加速在移动Safari中,但3D转换是。我不确定为什么会这样,但也许他们认为对于大多数2D变换来说是过度的。不必要地使用GPU可能会对电池寿命产生不利影响。

将2D变换转换为3D变换非常容易,所以它不是什么大问题。一个窍门是使用translateZ(0)如下所述:http://creativejs.com/2011/12/day-2-gpu-accelerate-your-dom-elements/

编辑

苹果并没有说明它在其文档中任何东西,所以很难得到一个权威来源。以下是来自苹果院长杰克逊不得不说一下它(从http://mir.aculo.us/2010/08/05/html5-buzzwords-in-action/):

从本质上说,任何变换具有3D操作作为其功能之一将触发硬件合成,即使实际的变换是2D ,或者根本没有做任何事情(比如translate3d(0,0,0))。请注意,这只是目前的行为,并可能在未来发生变化(这就是为什么我们不记录或鼓励它)。但它在某些情况下非常有用,并且可以显着提高重绘性能。

Sencha的Ariya Hidayat在移动浏览器上写了一篇文章解释硬件加速:http://www.sencha.com/blog/understanding-hardware-acceleration-on-mobile-browsers/。下面是帖子的一个片段:

将CSS转换矩阵设置为translate3d或scale3d(即使没有涉及3-D)的最佳实践来自于这些类型的矩阵将切换动画元素具有自己的图层,然后将其与网页和其他图层的其余图层合成在一起。但是你应该注意到,创建和合成层带有价格,即内存分配。为了硬件加速的目的,盲目地将网页中的每个小元素都组合起来并不明智,你会吃掉内存。

这是来自html5rocks.com的一篇讨论硬件加速的文章:http://www.html5rocks.com/en/tutorials/speed/html5/。下面是它的一个片段:

目前大多数浏览器只在使用GPU加速功能时,他们强烈指示HTML元素会从中受益。最强烈的迹象是3D转换被应用到它。现在你可能并不是真的想要应用3D转换,但仍然可以从GPU加速中获益 - 没有问题。简单地应用标识转换:

-webkit-transform:translateZ(0);

Firefox和Internet Explorer已经在2D转换中使用硬件加速,因此如果WebKit浏览器(Chrome,Safari)在不久的将来将其包含在内,我不会感到惊讶。

+0

如果您可以提供权威来源的链接,我会接受您的答案。 – KaptajnKold 2012-04-10 11:00:20