2

此页面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 有区别?)

4

3 回答 3

3

他们显然打算让 Skia 被某些东西加速,但它从未真正发生过。PixelFlinger 和 libagl 看起来也很像 OpenGL 的早期版本,但也从未真正加速过。

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

他们还急需在 2.0 中改进对 FBO 的支持。它是新的 TextureView 和 VideoView 类的基础。

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

于 2014-02-01T19:17:37.287 回答
1

据此:适用于 Android 的硬件加速 2D 渲染(幻灯片 36 - 39)

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

于 2014-04-16T09:35:41.377 回答
1

显然,Android-O正在(再次)发生变化。(也在这里讨论)

Android-O 中的 Skia

于 2018-02-27T09:26:30.543 回答