在Android平台上,虽说系统自带的GLSurfaceView这个控件中已经帮我们创建好EGL环境了,一般来说使用GLSurfaceView就可以满足我们的需求了。
而当我们用不着GLSurfaceView的时候,那又如何自己创建EGL环境呢?因此就来探究下 EGL环境的创建。
在Java层,EGL封装了两套框架
- 位于javax.microedition.khronos.egl包下的EGL10。
- 位于android.opengl包下的EGL14。
区别如下:
EGL14是在Android 4.2(API 17)引入的,所以API 17以下的版本不支持EGL14。
EGL10不支持OpenGL ES 2.x,因此在EGL10中某些相关常量参数只能用手写硬编码代替,例如EGL14.EGL_CONTEXT_CLIENT_VERSION以及EGL14.EGL_OPENGL_ES2_BIT等等。
流程如下:
- EGLDisplay,获取默认的显示设备(渲染的目标),并初始化
- EGLConfig,配置参数来获取EGL支持的EGLConfig
- EGLContext,创建上下文环境
- EGLSurface,创建EGLSurface来连接EGL和设备的屏幕
获取并初始化EGLDisplay
所谓显示设备,也就是我们OpenGL渲染的目标,也可以说就是我们的屏幕,而EGLDisplay是一个封装了物理屏幕的数据类型。
一般来说我们都需要对获取的结果进行验证,如果没获取到抛出异常即可。
//获取默认的显示设备,渲染的目标
mEglDisplay = EGL14.eglGetDisplay(EGL14.EG