零基础 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 的配置属性
EGLContext – OpenGL ES 图形上下文
二. EGL 绘制流程简介
- 获取 EGL Display 对象:eglGetDisplay
- 初始化与 EGLDisplay 之间的连接:eglInitialize
- 获取 EGLConfig 对象:eglChooseConfig
- 创建 EGLContext 实例:eglCreateContext
- 创建 EGLSurface 实例:eglCreateWindowSurface
- 连接 EGLContext 和 EGLSurface:eglMakeCurrent
- 使用 OpenGL ES API 绘制图形:gl_*
- 切换 front buffer 和 back buffer 显示:eglSwapBuffer
- 断开并释放与 EGLSurface 关联的 EGLContext 对象:eglRelease
- 删除 EGLSurface 对象
- 删除 EGLContext 对象
- 终止与 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
五.猜你喜欢
- 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
暂无评论内容