目录
- 一. EGL 前言
 - 二. EGL 绘制流程简介
 - 三.eglDestroyContext 函数简介
 - 四.eglDestroyContext 使用
 - 四.猜你喜欢
 
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 转场
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 函数
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES GPUImage 使用
零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES GLSL 编程
一. EGL 前言
EGLNativeDisplayType – 系统显示类型,标识你所开发设备的物理屏幕,DX/OPenGL ES/Metal/Vulkan….
EGLNativeWindowType – 系统窗口,渲染显示的窗口句柄
EGLDisplay – 关联 EGLNativeDisplayType 系统物理屏幕的通用数据类型,是平台上 WGL / GLX / AGL 的等价物
EGLSurface – 渲染区域,相当于 OpenGL ES 绘图的画布 (一块内存空间),用户想绘制的信息首先都要先绘制到 EGLSurface 上,然后通过 EGLDisplay 显示
EGLConfig – 对 EGLSurface 的 EGL 配置,可以理解为绘制目标 framebuffer 的配置属性
EGLContext – OpenGL ES 图形上下文
二. EGL 绘制流程简介
- 获取 EGL Display 对象:eglGetDisplay
 - 初始化与 EGLDisplay 之间的连接:eglInitialize
 - 获取 EGLConfig 对象:eglChooseConfig / eglGetConfigs
 - 创建 EGLContext 实例:eglCreateContext
 - 创建 EGLSurface 实例:eglCreateWindowSurface / eglCreatePbufferSurface
 - 连接 EGLContext 和 EGLSurface 上下文 eglMakeCurrent
 - 使用 OpenGL ES API 绘制图形:gl_*
 - 切换 front buffer 和 back buffer 显示:eglSwapBuffer
 - 断开并释放与 EGLSurface 关联的 EGLContext 对象:eglRelease
 - 删除 EGLSurface 对象 eglDestroySurface
 - 删除 EGLContext 对象 eglDestroyContext
 - 终止与 EGLDisplay 之间的连接
 

三.eglDestroyContext 函数简介
eglDestroyContext 用于销毁渲染 Context 上下文,如果有其它线程使用这个 Context 上下文时就要等到不使用时再销毁,否则立即销毁;
/*描述:用于销毁渲染 EGLContext
 *参数:
 *    display:指定显示的连接
 *    context:EGLContext 上下文
 *
 *返回值:成功是返回 EGL_TRUE,失败时返回 EGL_FALSE
 */
EGLAPI EGLBoolean eglDestroyContext(EGLDisplay display,
                                    EGLContext context);
可能返回错误:
EGL_FALSE is returned if destruction of the context fails, EGL_TRUE otherwise.
EGL_BAD_DISPLAY is generated if display is not an EGL display connection.
EGL_NOT_INITIALIZED is generated if display has not been initialized.
EGL_BAD_CONTEXT is generated if context is not an EGL rendering context.
在使用 eglDestroyContext 摧毁上下文之前一定要记得通过 eglMakeCurrent 绑定当前上下文;
四.eglDestroyContext 使用
/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:OpenGL ES EGL eglDestroyContext
//@Time:2022/08/04 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/
void egl_demo()
{
  EGLDisplay display = eglGetDisplay ( EGL_DEFAULT_DISPLAY );
    eglInitialize ( display , 0, 0);
  EGLConfig  config;
    eglChooseConfig ( display , attribs , & config , 1, & numConfigs );
  EGLSurface  surface = eglCreateWindowSurface ( display , config , ANativeWindow  , NULL );
  EGLContext  context = eglCreateContext ( display , config , NULL , NULL );
  eglMakeCurrent ( display , surface , surface , context )
  while(true){
    //opengl绘制
    glxx();
    eglSwapBuffers ( display , surface );
  }
  eglDestroyContext ( display , context );
  eglDestroySurface ( display , surface );
  eglTerminate ( display );
}
四.猜你喜欢
- OpenGL ES 简介
 - OpenGL ES 版本介绍
 - OpenGL ES 2.0 和 3.0 区别
 - OpenGL ES 名词解释(一)
 - OpenGL ES 名词解释(二)
 - OpenGL ES GLSL 着色器使用过程
 - OpenGL ES EGL 简介
 - OpenGL ES EGL 名词解释
 - OpenGL ES EGL eglGetDisplay
 - OpenGL ES EGL eglInitialize
 - OpenGL ES EGL eglGetConfigs
 - OpenGL ES EGL eglChooseConfig
 - OpenGL ES EGL eglGetError
 - OpenGL ES EGL eglCreateContext
 - OpenGL ES EGL eglCreateWindowSurface
 - OpenGL ES EGL eglCreatePbufferSurface
 - OpenGL ES EGL eglMakeCurrent
 - OpenGL ES EGL eglSwapBuffer
 - OpenGL ES EGL eglDestroySurface
 - OpenGL ES EGL eglDestroyContext
 
本文由博客 - 猿说编程 猿说编程 发布!