【Android OpenGL开发】OpenGL ES与EGL介绍

news2024/9/21 2:34:54

在这里插入图片描述

什么是OpenGL ES

OpenGL(Open Graphics Library)是一个跨编程语言、跨平台的编程图形程序接口,主要用于图像的渲染。

Android提供了简化版的OpenGL接口,即OpenGL ES。

早先定义 OpenGL ES 是 OpenGL 的嵌入式设备版本,用于移动端平台(Android、iOS),但由于嵌入式设备要求的是高性能,所以一些其它纯追求高性能的设备也开始用这种 API 方式;

OpenGL ES 是 OpenGL 的子集,区别在于 OpenGL ES 删减了 OpenGL 一切低效能的操作方式,有高性能的决不留低效能的,即只求效能不求兼容性。(即:OpenGL ES 能实现的,OpenGL 也能实现;OpenGL 部分 API,OpenGL ES 不支持)

在这里插入图片描述

什么是EGL

EGL是OpenGL ES和本地窗口系统的接口,不同平台上EGL配置是不一样的,而OpenGL的调用方式是一致的,就是说:OpenGL跨平台就是依赖于EGL接口。

简单的理解:
OpenGL ES 是Android绘图API,但OpenGL ES是平台通用的,在特定设备上使用需要一个中间层做适配,这个中间层就是EGL。

EGL 的架构图如下:
在这里插入图片描述

  • Display(EGLDisplay) 是对实际显示设备的抽象。
  • Surface(EGLSurface)是对用来存储图像的内存区域 FrameBuffer 的抽象,包括 Color Buffer, Stencil Buffer ,Depth Buffer。
  • Context (EGLContext) 存储 OpenGL ES绘图的一些状态信息。
安卓中EGL环境的创建有以下步骤:
  1. 获取Egl实例
  2. 获取默认的显示设备(就是窗口)
  3. 初始化默认显示设备
  4. 设置显示设备的属性
  5. 从系统中获取对应属性的配置
  6. 创建EglContext
  7. 创建渲染的Surface
  8. 绑定EglContext和Surface到显示设备中
代码展示:
OpenGL与EGL最基本流程
//1.获取显示器
EGLDisplay display = eglGetDisplay (EGL_DEFAULT_DISPLAY);
 
//2.初始化显示器
eglInitialize(display , 0, 0);
 
EGLConfig config;
//3.初始化配置
eglChooseConfig(display , attribs, & config, 1, &numConfigs );
 
//4.创建surface
EGLSurface surface = eglCreateWindowSurface(display, config, ANativeWindow , NULL);
 
//5.创建场景
EGLContext  context = eglCreateContext (display, config, NULL , NULL);
eglMakeCurrent (display, surface, surface , context);//绑定线程
 
while(true){
//6.opengl绘制
glxx();
 
eglSwapBuffers(display , surface );
}
 
//7.销毁surface
eglDestroyContext( display , context );
 
//8.销毁场景
eglDestroySurface(display , surface );
eglTerminate(display );

参考

官网链接

在这里插入图片描述

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

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

相关文章

Mac上超实用的6款软件,老用户都知道!

今天为大家带来的是6款超实用的Mac软件,让你不再走弯路。第一款:Amphetamine 防休眠的利器Amphetamine for mac是应用在Mac上的一款防休眠工具,可以自定义哪些程序运行时不休眠,做到自定义Mac睡眠时间,可以通过超级简单…

【数据结构】链式存储:链表(无头双向链表实现)

目录 🥇一:无头双向链表 🎒二、无头双向链表的实现 📘1.创建节点类 📒2.创建链表 📗3.打印链表 📕4.查找是否包含关键字key是否在单链表当中 📙5.得到单链表的长度 &#x1…

PCL中常用的高级采样方法

0. 简介 我们在使用PCL时候,常常不满足于常用的降采样方法,这个时候我们就想要借鉴一些比较经典的高级采样方法。这一讲我们将对常用的高级采样方法进行汇总,并进行整理,来方便读者完成使用 1. 基础下采样 1.1 点云随机下采样 …

代码随想录拓展day6 N皇后

代码随想录拓展day6 N皇后 只有这一个内容。一刷的时候也没弄太明白,二刷的时候补上。还有部分内容来自牛客网左老师的算法课程。 总体思路不容易想明白,优化也有很大难度。这要是面试能碰上基本就是故意不给过了吧。 思路 首先来看一下皇后们的约束…

Flink 容错恢复 2.0 2022 最新进展

摘要:本文整理自阿里云 Flink 存储引擎团队负责人,Apache Flink 引擎架构师 & PMC 梅源在 FFA 核心技术专场的分享。主要介绍在 2022 年度,Flink 容错 2.0 这个项目在社区和阿里云产品的进展,内容包括:Flink 容错恢…

基于ssm的个人健康管理系统

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

简单理解光会产生折射的原因及折射定律的推导

已知 1、光是一种波; 2、光在不同介质中传播速度不同。 构建模型 如下图所示,光是中电磁波,以余弦波为例,取余弦波的极大值点为参考,建立一个平面波(波前为一个平面)。能明显的看出光的传播方…

树形结构——二叉树

前言 前面的章节我们介绍了两种重要的数据结构,数组和链表,由于他们各自的特性使得他们的优缺点非常分明,在查询速度和插入速度上顾此失彼,不能兼顾,那么有没有一种数据结构可以同时高效的完成插入和查询操作呢&#x…

专访 | 刘嘉松:开源,互惠且共赢

本文整理自对 2022 开源之夏 OpenMLDB 社区贡献者刘嘉松同学的采访,欢迎大家关注~ OpenMLDB:可以先请你介绍一下你自己吗? 刘嘉松:我叫刘嘉松,是中南大学计科专业的一名本科生,目前大四,未来将继续在中南…

Hello 2023 D. Boris and His Amazing Haircut

原题链接:Problem - D - Codeforces 题意: 给定长度为 n 的数组 A ,代表 Boris 现在的头发长度,和一个长度为 n 的数组 B ,代表他希望的发型的头发长度。理发师手里有 m 把剪刀,每个都只能用一次&#xff…

计算机硕士论文,盲审的老师都很严吗? - 易智编译EaseEditing

首先,学位论文必须论证严谨 对于一个结果的解读,先老老实实的把得到什么结果讲一遍,基于这个所得出的结论说一说,最后,来个非谓语的短句吹一吹重要性或提示意义。 这其实是有套路的一个句子写下来。但是,在…

AC7811-ACMP模拟比较器

在无感的BLDC方波控制中,AC7811没办法再直接通过PWDT模块检测霍尔信号了。 所以需要先进行ACMP模块的初始化配置,使能ACMP模块正常工作后,ACMP会对输入的三相反电动势与电机中电电压进行轮询模拟,得到各相反电动势过零点&#xf…

分享5款有趣但或许不那么实用的软件

今天我想分享几个有趣但或许不那么实用的软件,各位喜欢的朋友可以自行下载呢。 1.软件音量设置——EarTrumpet 听音乐、看视频、玩游戏,在各应用切换过程中,你可能会频繁调整系统音量大小,以适应自己的耳朵。而 EarTrumpet 则可…

AIGC:BAT、抖快的新掘金口?

配图来自Canva可画 AI辅助绘画估值超十万? 12月28日,山东人民出版社看中一位4岁女孩用百家号AI作画创作的AI绘本《超能外星战队》,认为该画价值超十万元且有出版意向。与此同时,“AI作画”像病毒般在各大短视频平台蔓延&#xf…

年度盘点丨2022年,7大关键词彰显用友成长型企业数智力量

导读:这一年,他们用卓越成绩证明自己,用产品创新回馈客户,用实力开启了中国成长型企业数智化产业的逆袭之路! 2022年,企业级数智化产业经历了翻天覆地的变化。 曾经万家追捧的“舶来品”在成长型企业的主…

项目管理中,如何对各种文件进行统一版本管理?

不知道你在工作中是否也遇到过这样的问题:1、文件先存一个位置,等晚点再整理,结果过了一段时间,就变成了这样:2、想从电脑中找一份重要材料,要花费很长时间,有时查找一通,却一无所获…

Docker中MySQL主从复制

MySQL主从复制 主从搭建步骤 新建主服务器容器实例3307 docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD…

SAP年结账务调整过程中的业务改错处理心得

昨天遇到一个问题在这里分享一下。大家知道刚刚跨年,财务还在做一些后续调整。在业财一体化的系统中,这种调整往往涉及到两个方向,财务端去调,还是业务端去调。但大家要了解一个前提。即然需要做调整,肯定是业务端出错…

IPC(IP CAMERA)

IPC是IP Camera的缩写词,IP是网际协定,Camera是照相机、摄影机,IP Camera顾名思义就是网路摄像机,它是一种由传统摄像机与网路技术结合所产生的新一代摄像机。 注:NVR,全称Network Video Recorder&#xff…

有哪些设备管理软件值得推荐?

有哪些设备管理软件值得推荐? 别滑了, 翻遍全网,好用的设备管理软件都给你整理好了,白嫖的好事可千万别错过。 要知道好用的设备管理软件,可是能为企业持续、稳定、快速发展,及提高经济效益发挥重要作用。…