首页 > 其他分享 >OpenGL ES EGL eglGetError

OpenGL ES EGL eglGetError

时间:2022-10-28 19:01:21浏览次数:61  
标签:OpenGL EGL eglGetError EGLSurface configs 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 学习目录 >> 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 / eglGetConfigs
  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 之间的连接

三.eglGetError 函数简介

EGL 中大部分函数成功时都是返回 EGL_TRUE,失败返回 EGL_FALSE。至于其他错误原因,需要调用 eglGetError 函数获取:

// 描述:返回 EGL 错误号,如果返回 EGL_SUCCESS 说明没有错误
EGLint eglGetError();

四.eglGetError 函数使用

调用 eglGetError 如果返回 EGL_SUCCESS 说明没有错误,返回其他值表示有错误产生;例如 :eglInitialize 会初始化 EGL 内部数据,分配显存等初始化失败

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:OpenGL ES EGL eglGetError
//@Time:2022/08/04 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

EGLint attrs[3] = { EGL_DEPTH_SIZE, 16, EGL_NONE };
EGLint num_configs;
EGLConfigs *configs_list;
// Get the display device
if ((eglDisplay = eglGetDisplay(EGL_NO_DISPLAY)) == EGL_NO_DISPLAY) {
	return eglGetError();
}
// Initialize the display
if (eglInitialize(eglDisplay, NULL, NULL) == EGL_FALSE) {
	return eglGetError();
}
// Obtain the total number of configurations that match
if (eglChooseConfig(eglDisplay, attrs, NULL, 0, &num_configs) == EGL_FALSE) {
	return eglGetError();
}
configs_list = malloc(num_configs * sizeof(EGLConfig));
if (configs_list == (EGLConfig *)0){
	return eglGetError();
}
// Obtain the first configuration with a depth buffer of 16 bits
if (!eglChooseConfig(eglDisplay, attrs, &configs_list, num_configs, &num_configs)) {
	return eglGetError();
}

五.猜你喜欢

  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
  11. OpenGL ES EGL eglGetConfigs
  12. OpenGL ES EGL eglChooseConfig
  13. OpenGL ES EGL eglGetError

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

标签:OpenGL,EGL,eglGetError,EGLSurface,configs,ES
From: https://www.cnblogs.com/shuopython/p/16837128.html

相关文章

  • 【BZOJ2127】happiness(网络流)
    建模:首先\(S\)向每一个\((i,j)\)连一条它选文科的价值的边,每一个\((i,j)\)向\(T\)连一条它选理科的价值的边。然后对于两个点\(a,b\),假设他们同时选理科能获得......
  • wireshark 跟踪数据流
     过滤ip地址:ip.addr==192.168.1.1//只显示IP为192.168.1.1的数据包notip.src==192.168.1.1//不显示源ip为192.168.1.1的数据包过滤端口:tcp.port==80......
  • Wireshark解密HTTPS流量的两种方法
    原理我们先回顾一下SSL/TLS的整个握手过程:Clienthello:发送客户端的功能和首选项给服务器,在连接建立后,当希望重协商、或者响应服务器的重协商请求时会发送。versio......
  • ubuntu学习5 more/less/head/tail/which/用户和组/useradd/useradel/usermod/groupadd
    more: 查看文件内容  more11.txtless :查看文件内容    less11.txthead:输出文件的开始的部分,可以指定行数,默认显示10行   head11.txth......
  • Codeforces Round #739 (Div. 3) E
    E.PolycarpandStringTransformation显然我们可以通过看谁消失的最早知道删除序列然后有了删除序列以后我们能干什么呢显然对于每一个删除序列我们要是第一次就把......
  • Graphics Stack总结(二) Mesa漫游
    回顾前一篇文章中我们对Linuxgraphicsstack有了一个快速介绍,接下来我将解释为什么我们称之为graphicsdriverinLinux实际上是三个不同drivers的组合:theuserspace......
  • KubeSphere 社区双周报 | 2022-10-28
    KubeSphere从诞生的第一天起便秉持着开源、开放的理念,并且以社区的方式成长,如今KubeSphere已经成为全球最受欢迎的开源容器平台之一。这些都离不开社区小伙伴的共同努力......
  • 导出报错cannot be resolved to absolute file path because it does not reside in t
    SpringBoot项目打包部署,读取jar里面的文件报错500,异常日志关键提示cannotberesolvedtoabsolutefilepathbecauseitdoesnotresideinthefilesystem报错定位......
  • WindowsServer2008 安装.NET Framework 4.0 失败,错误HRESULT 0xc8000222解
    安装.NETFramework4.0失败错误提示如下图: 解决方案:一、点击开始、运行。输入CMD,打开CMD在命令行里面输入netstopWuAuServ然后按回车键,提示如下图所示: 二......
  • vuex和浏览器【sessionStorage,localStorage ..】 得区别
    1.Vuex的主要作用是用来共享和管理数据,那为什么不直接使用浏览器缓存呢?2.Vuex和浏览器缓存策略的根本区别是什么?3.Vuex,state仓库中的数据流是单向同步的,那为什么可以在act......