速读原著-Android应用开发入门教程(使用OpenGL图形接口的程序结构)

2020-02-13 15:09:42 浏览数 (1)

第 10 章 OpenGL 3D图形的使用

10.1 使用OpenGL图形接口的程序结构。

在 Android 中,可以直接支持 3D 图形的绘制,主要使用 OpenGL 标准的类javax.microedition.khronos.egl,但是需要结合 Android GUI 系统使用。Android 中 OpenGL 接口使用的结构如图所示:

在使用 3D 的图形 API 方面,主要的步骤通常如下所示: 1.扩展实现 android.view.GLSurfaceView 类。 2.扩展实现 android.opengl.GLSurfaceView 中的 Renderer(渲染器)。 3.实现 GLSurfaceView::Renderer 中的 onDrawFrame()等函数。

android.opengl.GLSurfaceView 扩展了 android.view.SurfaceViewandroid. view.SurfaceView 扩展了 android.view.View,因此 GLSurfaceView 本身可以作为 android. view.View 来使用。GLSurfaceView::Renderer 是一个接口,其中主要定义了以下几个方法:

代码语言:javascript复制
abstract void onDrawFrame(GL10 gl) // 绘制当前帧
abstract void onSurfaceChanged(GL10 gl, int width, int height) 
 // Surface 变化时调用
abstract void onSurfaceCreated(GL10 gl, EGLConfig config) 
 // Surface 创建时调用

各个方法的参数 GL10 是 javax.microedition.khronos.egl 包中的通用函数。GLSurface View::Renderer 中的onSurfaceChanged()onSurfaceCreated() 方法实际上是和 SurfaceView 中的两个方法对应的。实现的GLSurfaceView::Renderer,通过 GLSurfaceViewsetRenderer()方法将其设置到 GLSurfaceView 中。

在 ApiDemo 的示例程序中,android/apis/graphics/中的 GLSurfaceViewActivity、TouchRotateActivity、TriangleActivity 等程序和 spritetext/及/Kube/目录中的程序是 OpenGL 的示例程序。

0 人点赞