此页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的区别?)
答案 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后端。