目录
零基础 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 编程
EGLNativeDisplayType – 系统显示类型,标识你所开发设备的物理屏幕,DX/OPenGL ES/Metal/Vulkan….
EGLNativeWindowType – 系统窗口,渲染显示的窗口句柄
EGLDisplay – 关联 EGLNativeDisplayType 系统物理屏幕的通用数据类型,是平台上 WGL / GLX / AGL 的等价物
EGLSurface – 渲染区域,系统窗口或 frame buffer 句柄 ,可以理解为一个后端的渲染目标窗口
EGLConfig – 对 EGLSurface 的 EGL 配置,可以理解为绘制目标 framebuffer 的配置属性
EGLContext – OpenGL ES 图形上下文
**在不同平台上有不同的机制以关联窗口系统,在 Windows 上是 WGL ,在 Linux 上是 GLX ,在 Apple OS 上是 AGL 等。 **
EGL 则是平台上 WGL / GLX / AGL 的等价物。eglGetDisplay 为原生窗口系统 displayId 获取一个 EGL display 连接,在 OpenGL ES 与本地窗口系统之间架起了一座沟通的桥梁,函数声明如下:
/* 描述:获取 EGLDisplay 对象 显示设备
* 参数:
* displayId:系统显示类型
*
* 返回值:成功返回 EGLDisplay 对象,失败返回 EGL_NO_DISPLAY
*/
EGLDisplay eglGetDisplay(EGLNativeDisplayType displayId);
EGLNativeDisplayType 默认为 EGL_DEFAULT_DISPLAY ,即返回与默认原生窗口的连接,在 Windows 中默认为 DX 渲染
EGLDisplay eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY); //两种写法任选其一,效果等价
EGLDisplay eglDisplay = eglGetDisplay(0); //两种写法任选其一,效果等价
OpenGL 选择 EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE
//OpenGL 选择 EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE
EGLAttrib dispattrs[] = { EGL_PLATFORM_ANGLE_TYPE_ANGLE,
EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE,EGL_NONE };
EGLDisplay eglDisplay = eglGetPlatformDisplay(EGL_PLATFORM_ANGLE_ANGLE,
EGL_DEFAULT_DISPLAY, dispattrs);
DX 选择 EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE 或者 EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE
//DX 选择 EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE 或者 EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE
EGLAttrib dispattrs[] = { EGL_PLATFORM_ANGLE_TYPE_ANGLE,
EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE,EGL_NONE };
EGLDisplay eglDisplay = eglGetPlatformDisplay(EGL_PLATFORM_ANGLE_ANGLE,
EGL_DEFAULT_DISPLAY, dispattrs);
EGLDisplay eglDisplay = eglGetDisplay(EGLNativeDisplayType displayId);
if (eglDisplay == EGL_NO_DISPLAY || eglGetError() != EGL_SUCCESS))
return error;
else
return success;