当我们需要把同一个场景渲染到不同的Surface
上时,此时系统GLSurfaceView
就不能满足需求了,所以我们需要自己创建EGL环境来实现渲染操作。
注意: OpenGL
整体是一个状态机,通过改变状态就能改变后续的渲染方式,而 EGLContext(EgL上下文)
就保存有所有状态,因此可以通过共享EGLContext
来实现同一场景渲染到不同的Surface
上。
我们通过分析GLSurfaceView
来实现自己的代码
首先需要配置EGL环境(EGLHelper
):Android配置EGL环境
EGL环境配置成功后,定义GLSurfaceView主要为以下步骤:
1、继成SurfaceView,并实现其CallBack回调
2、自定义GLThread线程类,主要用于OpenGL的绘制操作
3、添加设置Surface和EglContext的方法
4、提供和系统GLSurfaceView相同的调用方法
EglSurfaceView.java
1 | package com.zzw.glsurfaceviewdemo; |
使用和正常的GLSurfaceView一样:
1 | package com.zzw.glsurfaceviewdemo; |