• Android 3D绘图开发简介

    3D图像的绘制使用的是 OpenGL ES,所以我们先介绍 OpenGL ES。

    OpenGL 是一组跨平台的 3D 图像处理 API,OpenGL ES 是 OpenGL 的嵌入式版本,Android 系统从 Android 1.0 开始支持 OpenGL ES 1.0 和 1.1,自 Android 2.2(API Level 8)开始,Android 框架开始支持 OpenGL 2.0 API。

    在这里仅介绍其使用方法。详细资料可以查询 Android SDK 的相关文档。

    使用 OpenGL ES API 绘制 3D 图像有两个基础的相关类,一个是 GLSurfaceView 类,另一个是 GLSurfaceView.Renderer 接口。

    1)GLSurfaceView 类

    GLSurfaceView 类是 SurfaceView 的子类,使用内嵌的 Surface 进行 OpenGL 绘图渲染。GLSurfaceView 提供以下功能:

    • 管理 Surface,Surface 是一块内存,可以被加载到 View 视图中。
    • 管理一个 EGL 显示,能够使用 OpenGL 把内容渲染到 Surface 上。
    • 接受用户自定义渲染器用于实际渲染。
    • 使渲染器在单独的线程中运行,与更新 UI 的线程相分离。
    • 支持按需渲染(on-demand rendering)和连续渲染(continuous rendering)。
    • 提供一些可选工具,如 OpenGL 调用的跟踪调试和错误检查等。

    2)GLSurfaceView.Renderer 接口

    GLSurfaceView.Renderer 接口定义了使用 OpenGL 绘图时所需的方法。该接口通过 GLSurfaceView.setRenderer() 与 GLSurfaceView 关联在一起。

    该接口实现以下三个方法。

    • onSurfaceCreated():当创建 GLSurfaceView 对象后,该方法被系统调用一次。通常在该方法中设置 OpenGL 环境的相关参数,初始化 OpenGL 图形对象等。
    • onDrawFrame():GLSurfaceView 对象每一次重绘时系统都会调用该方法。该方法应该执行具体的绘图工作。
    • onSurfaceChanged():当 GLSurfaceView 对象的几何外形改变时,包括 GLSurfaceView 的尺寸发生改变、设备屏幕的方向发生改变等情况,该方法被系统调用。

    实例 OpenGLDemo 演示了在 Activity 中使用 GLSurfaceView 和 GLSurfaceView.Renderer 合作绘制三维图形的过程。

    该实例绘制了一个不断旋转的立方体,运行效果如图 1 所示。

    实例OpenGLDemo的运行效果
    图 1  实例OpenGLDemo的运行效果

更多...

加载中...