【问题标题】:Android, Skia, and hardware accelerated graphicsAndroid、Skia 和硬件加速图形
【发布时间】:2014-01-30 18:30:43
【问题描述】:

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

【问题讨论】:

    标签: android canvas opengl-es skia


    【解决方案1】:

    他们显然打算让 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 类。

    【讨论】:

    • 好的,谢谢,我原以为 Skia 会成为硬件加速,但在没有 Skia 的情况下添加 GLES2 加速可能更容易。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      显然,things are changing(再次)使用 Android-O。 (也讨论了here)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多