OpenGL ES EGL eglInitialize

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 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 – 渲染区域,系统窗口或 frame buffer 句柄 ,可以理解为一个后端的渲染目标窗口

EGLConfig – 对 EGLSurface的 EGL 配置,可以理解为绘制目标 framebuffer 的配置属性

EGLContextOpenGL ES 图形上下文


二. EGL 绘制流程简介

  1. 获取 EGL Display 对象:eglGetDisplay
  2. 初始化与 EGLDisplay 之间的连接:eglInitialize
  3. 获取 EGLConfig 对象:eglChooseConfig
  4. 创建 EGLContext 实例:eglCreateContext
  5. 创建 EGLSurface 实例:eglCreateWindowSurface
  6. 连接 EGLContext 和 EGLSurface:eglMakeCurrent
  7. 使用 OpenGL ES API 绘制图形:gl_*
  8. 切换 front buffer 和 back buffer 显示:eglSwapBuffer
  9. 断开并释放与 EGLSurface 关联的 EGLContext 对象:eglRelease
  10. 删除 EGLSurface 对象
  11. 删除 EGLContext 对象
  12. 终止与 EGLDisplay 之间的连接

三. eglInitialize 函数简介

EGL 成功与 EGLDisplay 连接后,需要初始化 EGL ,调用 eglInitialize 函数完这成这个作务。函数如下:

 /* 描述:初始化 EGL
  * 参数:
  *  dpy:系统显示类型,EGLDisplay 对象
  *  major:返回 EGL 主版本号,如果不关心版本号可以直接设置为 NULL
  *  minor:返回 EGL 次版本号,如果不关心版本号可以直接设置为 NULL
  * 
  * 返回值:成功返回 TRUE,失败返回 FALSE
  */
EGLBoolean eglInitialize (EGLDisplay dpy, EGLint *major, EGLint *minor);

函数返回时, major 和 minor 将被赋予当前 EGL 版本号。比如 EGL1.4 , major 返回 1 , minor 则返回 4 。如果你不关心版本号,给 major 和 minor 传 NULL 也是有效的。

EGLBoolean eglInitialize (display, NULL, NULL);

eglInitialize 可以得到系统中 EGL 版本号。了解当前的版本号在向后兼容性方面是非常有价值的。基于平台配置,软件开发可用清楚知道哪些 OpenGL ES API 可用访问,这将会为你的代码提供最大限度的可移植性。


要支持 GLES 3.0 要求 EGL 版本在 1.4 以上,如果版本低于 1.4 ,那么只能使用 OpenGL ES 2.0 API;


四.eglInitialize 相关错误码

可以通过 eglGetError 函数获取 EGL 错误:

EGL_NO_DISPLAY :EGL 不能初始化

EGL_BAD_DISPLAY :没有指定有效的 EGLDisplay


五.猜你喜欢

  1. OpenGL ES 简介
  2. OpenGL ES 版本介绍
  3. OpenGL ES 2.0 和 3.0区别
  4. OpenGL ES 名词解释(一)
  5. OpenGL ES 名词解释(二)
  6. OpenGL ES GLSL 着色器使用过程
  7. OpenGL ES EGL 简介
  8. OpenGL ES EGL 名词解释
  9. OpenGL ES EGL eglGetDisplay
  10. OpenGL ES EGL eglInitialize
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容