Android,Skia和硬件加速图形

时间:2014-01-30 18:30:44

标签: android canvas opengl-es skia

此页http://source.android.com/devices/graphics.html说:

  

在Android 3.0之前,Canvas使用 Skia 2D绘图库进行绘制,   它无法利用硬件加速。介绍   Android 3.0,Canvas API的硬件加速使用了新的绘图   名为 OpenGLRenderer 的库,用于将Canvas操作转换为   OpenGL操作,以便它们可以在GPU上执行。

然而,Skia页面http://code.google.com/p/skia/说Skia可以回到OpenGL。

此外,此Skia常见问题https://sites.google.com/site/skiadocs/user-documentation/faq说:“已编写SkGLCanvas以将其绘图调用指向OpenGL。”

所以我想知道,是否有一个特殊原因Android不会简单地使用Skia支持OpenGL获取硬件加速图形?(可能是OpenGL和OpenGL ES的区别?)

2 个答案:

答案 0 :(得分:3)

他们显然希望Skia能够通过某些东西加速,但它从未真正发生过。 PixelFlinger和libagl看起来很像OpenGL的早期版本,但从未实际加速过。

最大的破坏是2.0版本的OpenGL ES。它的大部分功能在于它的着色语言,并且没有直接的方法可以通过Skia来利用它。 ICS实际上是一个重大的重新设计,他们放弃了Skia而不是使用OpenGL ES 2.0 - 具有所有的GLSL功能。

他们也非常需要在2.0中改进对FBO的支持。它是新的TextureView和VideoView类的基础。

同样重要的是,超过99%的Android设备现在都具有OpenGL ES 2.0加速功能。有关他们如何将GLSL暴露给ICS中的Canvas API的示例,请查看Effects类。

答案 1 :(得分:1)

据此:Hardware Accelerated 2D Rendering for Android(幻灯片36-39)

Android使用Display List来有效地绘制视图,这就是为什么它不能直接使用Skia的OpenGL后端。