OpenGL ES EGL eglDestroyContext

打印 上一主题 下一主题

主题 843|帖子 843|积分 2529

目录
零基础 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 的配置属性
EGLContextOpenGL ES 图形上下文
二. EGL 绘制流程简介


三.eglDestroyContext 函数简介

eglDestroyContext 用于销毁渲染 Context 上下文,如果有其它线程使用这个 Context 上下文时就要等到不使用时再销毁,否则立即销毁;
  1. /*描述:用于销毁渲染 EGLContext
  2. *参数:
  3. *    display:指定显示的连接
  4. *    context:EGLContext 上下文
  5. *
  6. *返回值:成功是返回 EGL_TRUE,失败时返回 EGL_FALSE
  7. */
  8. EGLAPI EGLBoolean eglDestroyContext(EGLDisplay display,
  9.                                     EGLContext context);
复制代码
可能返回错误:
  1. EGL_FALSE is returned if destruction of the context fails, EGL_TRUE otherwise.
  2. EGL_BAD_DISPLAY is generated if display is not an EGL display connection.
  3. EGL_NOT_INITIALIZED is generated if display has not been initialized.
  4. EGL_BAD_CONTEXT is generated if context is not an EGL rendering context.
复制代码
在使用 eglDestroyContext 摧毁上下文之前一定要记得通过 eglMakeCurrent 绑定当前上下文;
四.eglDestroyContext 使用
  1. /******************************************************************************************/
  2. //@Author:猿说编程
  3. //@Blog(个人博客地址): www.codersrc.com
  4. //@File:OpenGL ES EGL eglDestroyContext
  5. //@Time:2022/08/04 07:30
  6. //@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  7. /******************************************************************************************/
  8. void egl_demo()
  9. {
  10.   EGLDisplay display = eglGetDisplay ( EGL_DEFAULT_DISPLAY );
  11.     eglInitialize ( display , 0, 0);
  12.   EGLConfig  config;
  13.     eglChooseConfig ( display , attribs , & config , 1, & numConfigs );
  14.   EGLSurface  surface = eglCreateWindowSurface ( display , config , ANativeWindow  , NULL );
  15.   EGLContext  context = eglCreateContext ( display , config , NULL , NULL );
  16.   eglMakeCurrent ( display , surface , surface , context )
  17.   while(true){
  18.     //opengl绘制
  19.     glxx();
  20.     eglSwapBuffers ( display , surface );
  21.   }
  22.   eglDestroyContext ( display , context );
  23.   eglDestroySurface ( display , surface );
  24.   eglTerminate ( display );
  25. }
复制代码
四.猜你喜欢

本文由博客 - 猿说编程 猿说编程 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表