【问题标题】:Does Android SurfaceView use the usual openGL es Calls?Android SurfaceView 是否使用通常的 openGL es 调用?
【发布时间】:2015-07-05 12:50:32
【问题描述】:

目前我的应用程序从使用 glSurfaceView 切换到 SurfaceView 但是,如果 SurfaceView 的内部进程只使用 在 glSurfaceView 中使用的 opengl es 调用

例如,在 glSurfaceView 中,您必须为 uv 坐标提供介于 (0.0`1.0) 之间的浮点值范围

但是,在 Surface View 中,您可以使用带有 int 值的 Rects,直接指向位图图像的像素坐标。它似乎更有效,但是如果必须在之后将坐标转换为浮点数以适应 opengl es 函数,那会浪费处理吗?

我只是一个新手,只想知道这些在内部是如何工作的。

【问题讨论】:

    标签: android opengl-es android-canvas surfaceview glsurfaceview


    【解决方案1】:

    如果您使用相同的 OpenGL ES 调用,它会使用相同的 OpenGL ES 调用。 GLSurfaceView 只是一个封装了 SurfaceView 的类库,并为您处理 EGL 设置和线程管理。您可以自己将 GLES 与 SurfaceView 一起使用(有关示例,请参见 Grafika)。

    如果你用 Canvas 在 SurfaceView 的 Surface 上绘图,那么你是用 Skia 库在软件中渲染,根本不涉及 OpenGL ES。

    如果您使用 Canvas 在自定义视图上绘图,则可能涉及硬件加速,并且您的 Canvas 绘图调用由 GLES 执行。在数字格式之间转换坐标是该操作中成本较低的部分之一。

    要了解内部工作原理,请参阅graphics architecture doc

    【讨论】:

      【解决方案2】:

      Android 内部可能会或可能不会使用带有表面视图的OpenGL 调用。当应用程序中明确关闭硬件加速或由于视图尺寸/格式等原因无法使用硬件加速时,Android 可以使用一个名为 SKIA 的软件渲染器进行渲染。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多