Android OpenGL ES 入门 1 - GLSurfaceView 简单介绍
在 Android 应用层我们如果要使用 OpenGL 进行绘制,可以选择 Android 平台给我提供的 GLSurfaceView 和 GLSurfaceView.Renderer。
其中 GLSurfaceView 是 SurfaceView 的子类,GLSurfaceView.Renderer 为我们在 GLSurfaceView 上渲染提供了回调。
简单写一个例子,首先是定义 Renderer:
1 | class MyRenderer : GLSurfaceView.Renderer { |
在上面的代码中,根据以往经验首先被回调的应该是 onSurfaceCreated
方法,在这个方法中,我们设置 OpenGL 的清屏颜色为红色。接着在 onSurfaceChanged
设置 OpenGL 的视窗大小。最后在 onDrawFrame
回调中进行 OpenGL 的清屏操作。
自定义一个 Renderer 就是这么简单,接下来是自定义 GLSurfaceView:
1 | class MyGLSurfaceView(context: Context) : GLSurfaceView(context) { |
自定义 GLSurfaceView 也是非常简单,将 MyRenderer 初始化,然后通过 setRenderer
方法设置给 GLSurfaceView 即可。
最后是在 Activity 中使用 MyGLSurfaceView:
1 | class GLSurfaceViewActivity : AppCompatActivity() { |
很简答,不多说了,最后是运行结果图:
我们代码中没有调用绘制命令,这个红色是怎么绘制出来的呢?其实这是 OpenGL 的一个内置方法,在 OpenGL 每次渲染前,都需要对上一次的绘制做清屏操作,不然两次绘制的内容就会叠加在一起。
从上面的代码中可以看出来 GLSurfaceView 帮我们做了很多 OpenGL 的初始化工作,当然想要使用 OpenGL 绘制,在 Android 平台上还少不了 EGL 库,GLSurfaceView 同样给我们做了 EGL 的初始化,让我们将注意力集中在 OpenGL 的绘制上。
后面我会化点时间,重点讲一下 EGL 的初始化以及更多 OpenGL 的渲染知识。