第 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.SurfaceView
, android. view.SurfaceView
扩展了
android.view.View
,因此 GLSurfaceView
本身可以作为 android. view.View
来使用。GLSurfaceView::Renderer
是一个接口,其中主要定义了以下几个方法:
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
,通过 GLSurfaceView
的 setRenderer()
方法将其设置到 GLSurfaceView 中。
在 ApiDemo 的示例程序中,android/apis/graphics/
中的 GLSurfaceViewActivity
、TouchRotateActivity、TriangleActivity
等程序和 spritetext/及/Kube/目录中的程序是 OpenGL 的示例程序。