OpenGL ES EGL eglChooseConfig

目录

  • 一. EGL 前言
  • 二. EGL 绘制流程简介
  • 三.eglGetConfigs 函数简介
  • 四.eglGetConfigs 函数使用
  • 五.猜你喜欢

零基础 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 绘制流程简介

  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 之间的连接

三.eglGetConfigs 函数简介

**EGLConfigs 是一个用来描述 EGLSurface 配置信息的数据类型。**一般来说,选择配置的方法有两种:

**方法一:系统支持的配置 eglGetConfigs(跨平台时会自动获取系统支持的配置) **

方法二:自定义配置 eglChooseChofig(跨平台时,不同平台需要设置不同的配置)

函数声明如下:

/* 描述:配置列表,用于后面创建 EGLSurface* 参数:*     dpy:系统显示类型,EGLDisplay 对象*     attr_list:你想要的属性事先定义到这个数组里*     config:图形系统将返回若干满足条件的配置到该数组*     config_size:想要选中符合的config的最大个数*     num_config:图形系统返回的可用的配置个数* 返回值:成功返回 TRUE,失败返回 FALSE
*/ 
EGLboolean eglChooseConfig(EGLDisplay dpy,const EGLint * attr_list,EGLConfig * config,EGLint config_size,EGLint *num_config)

四.eglGetConfigs 函数使用

glChooseConfig 函数将适配一个你所期望的配置,并且尽可能接近一个有效的系统配置。

attribList 指定了选择配置时需要参照的属性。

configs 将返回一个按照 attribList 排序的平台有效的所有 EGL framebuffer 配置列表。

config_size 指定了可以返回到 configs 的总配置个数。

num_config 返回了实际匹配的配置总数。

示例代码:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:OpenGL ES EGL eglChooseConfig
//@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();
}

**使用 **glChooseConfig 函数将适配一个你所期望的配置,并且尽可能接近一个有效的系统配置。****

而在跨平台时,EGLConfigs 配置会有差别,我们可以直接通过 eglGetConfigs 来获取系统支持的配置,系统支持的配置通常是利用系统硬件提供最好的性能,同时也可以解决跨平台配置问题

五.猜你喜欢

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九篇:Spring Boot整合Spring Data JPA_入门试炼03

CrudRepository接口的使用 CrudRepository接口,主要完成一些增删改查的操作。 注意:CrudRepository接口继承Repository接口 1、持久层接口: package com.gblfy.repository;import com.gblfy.pojo.Users; import org.springframework.data.r…

第九篇:Spring Boot整合Spring Data JPA_入门试炼04

六、PagingAndSortingRepository接口 前言&#xff1a;该接口提供了分页与排序的操作&#xff0c;该接口继承了CrudRepository 1、持久层接口&#xff1a; public interface UserRepositoryPagingAndSorting extends PagingAndSortingRepository<Users,Integer> { }测试…

qt创建图形项,添加自定义窗口

创建场景&#xff0c;视图和图形项之后&#xff0c;在图形项中添加自定义窗口。主要代码如下&#xff1a; scene new QGraphicsScene(0,0,1855,578,ui->insideWidget);//在开发中QGraphicsScene::sceneRect最好小于等于QGraphicsView::sceneRect大小&#xff0c;以保证在缩…

成立一周?谷歌人工智能道德委员会解散了?近日,金山云和小米刚签订了不超过9000万的硬件产品供应协议,闹哪样? | 极客头条...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 亚马逊推Alexa无线耳机&…

java.sql.SQLException: validateConnection false

解决方案&#xff1a; 将mysql-connector-java版本修改为下面版本&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.0.2</version> </dependency>

第九篇:Spring Boot整合Spring Data JPA_入门试炼05

JpaRepository接口 前言&#xff1a;该接口继承了PagingAndSortingRepository接口。对继承的父接口中方法的返回值进行适配。 例如&#xff1a;父接口中的方法的返回值是是迭代器&#xff0c;而在子类(JpaRepository)返回值是Lis集合。 1、持久层接口&#xff1a; public inte…

2019年技术盘点微服务篇(二):青云直上云霄 | 程序员硬核评测

戳蓝字“CSDN云计算”关注我们哦&#xff01;程序员硬核评测&#xff1a;客观、高效、不说软话。无论是技术质量、性能水平&#xff0c;还是工具筛选&#xff0c;一测便知&#xff01;作者&#xff1a;孙浩峰过去几年来&#xff0c;“微服务架构”方兴未艾&#xff0c;尽管这种…

第九篇:Spring Boot整合Spring Data JPA_入门试炼06

八、JpaSpecificationExecutor接口 前言&#xff1a;该接口主要提供了多条件查询的支持&#xff0c;并且可以在查询中添加分页和排序。 注意&#xff1a;JpaSpecificationExecutor接口是独立存在的。完全独立。 1、持久层接口&#xff1a; public interface UsersRepositoryS…

Qt场景中图形项的删除

场景中图形项删除的时候调用系统函数removeItem()删除该图形项&#xff0c;但还需将图形项delete掉&#xff0c;并置为空&#xff0c;主要代码如下&#xff1a; void chunzhongForm::deleteItem(QGraphicsItem *item) {scene->removeItem(item);if(item ! NULL){delete ite…

第十篇:Spring Boot整合mybatis+逆向工程(Mysql+Oracle) 入门试炼01

1、添加pom依赖 <dependencies><!--springboot web 启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--thymeleaf 启动器--><d…

Qt中QMap删除元素的简单使用

QMap基本上qt中的使用和C中QMap的使用一样&#xff0c;下面先附上一段代码&#xff1a; void chunzhongForm::deleteScrGroupItem(int screenGroup) {QMap<findInfo,QGraphicsRectItem*>::iterator it;for(it itemMap.begin();it!itemMap.end();){if(it.key().sid scr…

Docker简介与简单使用 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;常仕禄转自&#xff1a;Docker前一段花了一段时间研究Log4j2的源码&a…

OpenGL ES EGL eglSwapBuffer

目录 一. EGL 前言二. EGL 绘制流程简介三.eglSwapBuffer 函数简介 四.关于多个 EGLContext五.共享 EGLContext六.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> Open…

第十篇:Spring Boot整合mybatis+Mysql 入门试炼02

前言&#xff1a; 1、(SprigBoot整合SpringMVCMybatis) 2、以thymeleaf作为视图层技术整合 3、springboot版本2.0.5.RELEASE 创建项目 1、添加依赖及启动器 <dependencies><!--springboot web 启动器--><dependency><groupId>org.springframework.boo…

qt获取场景的缩略图

获取场景缩略图的代码如下&#xff1a; void chunzhongForm::getRenderPaint() {QPixmap pixmap(SMALL_W,SMALL_H);pixmap.fill(Qt::transparent);QPainter painter(&pixmap);painter.setRenderHint(QPainter::Antialiasing);scene->render(&painter);pixmap.save(…

要闻君说:台积电将为iPhone生产5纳米A系列芯片?腾讯云TStack与银河麒麟完成互认证……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 【4月9日 星期二】云の声音切…

Centos出现-bash: unzip: command not found的解决办法

利用unzip命令解压缩的时候&#xff0c;出现-bash: unzip: command not found的错误 问题定位&#xff1a; unzip——命令没有找到&#xff0c;其原因肯定是没有安装unzip。 解决方案在线安装unzip &#xff1a; 执行命令&#xff1a; yum install -y unzip zip安装成功后就可…

一堆数据中将某一个值相同的数据进行分组

假如一堆数据&#xff0c;每一个数据都有一个标志位&#xff0c;按照标志位值的不同进行划分为不同的组&#xff0c;进行归类。 代码如下&#xff1a; void chunzhongForm::traverseList(winProList &dataList) {int nSize dataList.size();for(int i 0; i < nSize; …

微服务进阶避坑指南 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;来源&#xff1a;青云QingCloud 作者&#xff1a;周小四 青云QingCloud 应用及容器平台…

Launch failed - cleaning up connection

Jenkins远程连接ssh(Linux系统)失败 关键信息&#xff1a; Warning: no key algorithms provided; JENKINS-42959 disabled Warning: no key algorithms provided; JENKINS-42959 disabled SSHLauncher{host192.168.45.145, port22, credentialsId61eab5fd-5c3f-4bc7-a794-f87…