大家好,接下来将为大家介绍EGL 作用及其使用。
1、什么是EGL
EGL 是 OpenGL ES 渲染 API 和本地窗口系统(native platform window system)之间的一个中间接口层,EGL作为OpenGL ES与显示设备的桥梁,让OpenGL ES绘制的内容能够在呈现当前设备上。它主要由系统制造商实现。
EGL具有如下作用:
a:与设备的原生窗口系统通信。
b:查询绘图表面的可用类型和配置。
c:创建绘图表面。
d:在OpenGL ES 和其他图形渲染API之间同步渲染。
e:管理纹理贴图等渲染资源。
2、EGL和OpenGL ES的关系
从上面的讲解我们基本上可以知道,EGL为OpenGL提供绘制表面。或者说EGL是OpenGl ES的渲染画布。EGL作为OpenGL ES与显示设备的桥梁,让OpenGL ES绘制的内容能够在呈现当前设备上。
3、EGL绘图的基本步骤
简单讲解下各部分的作用:
a:Display(EGLDisplay) 是对实际显示设备的抽象。
b:Surface(EGLSurface)是对用来存储图像的内存区域FrameBuffer 的抽象,包括 Color Buffer, Stencil Buffer ,Depth Buffer。
c:Context (EGLContext) 存储 OpenGL ES绘图的一些状态信息。
4.1、EGL的基本使用步骤:
a:获取 EGL Display 对象:通过eglGetDisplay()方法来返回EGLDisplay作为OpenGL ES的渲染目标。
if ( (mEGLDisplay = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY)) == EGL14.EGL_NO_DISPLAY) {
throw new RuntimeException("unable to get EGL14 display"); }
b:初始化与 EGLDisplay 之间的连接:eglInitialize()。第一参数代表Major版本,第二个代表Minor版本。如果不关心版本号,传0或者null就可以了。
if (!EGL14.eglInitialize(mEGLDisplay, 0, 0)) {
throw new RuntimeException("unable to initialize EGL14"); }
c:获取 EGLConfig 对象:eglChooseConfig()。
int[] attribList = {
EGL14.EGL_RED_SIZE, 8,
EGL14.EGL_GREE