什么是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 );

参考

官网链接

【Android OpenGL开发】OpenGL ES与EGL介绍相关推荐

  1. OpenGL开发之旅基础知识介绍

    最近由于手机项目中需要用到OpenGL ES的知识,所以这段时间正在研究OpenGL的相关知识.因为OpenGL ES是OpenGL的剪裁版本,所以我直接从OpenGL入手,然后再去看OpenGL E ...

  2. 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一)

    上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一) 上篇文章中给大家简单介绍了一些业务,上门洗车APP --- Android客户端开发 前言及业务简介,本篇文章给大家介绍下 ...

  3. Android AR开发实践之一:AR介绍

    Android AR开发实践之一:AR介绍 一.什么是AR 二.AR的发展历程 三.AR的应用场景 四.AR技术面临的主要问题 五.AR平台简介 一.什么是AR AR(Augmented Realit ...

  4. android应用开发(21)---Activity介绍

    Activity介绍 该Activity是一个Android应用程序的重要组成部分,和活动方式推出,并放在一起是该平台的应用模式的基本组成部分.与使用main()方法启动应用程序的编程范例不同,And ...

  5. Android移动开发--对图形图像处理的介绍与应用

    前言 随着移动设备的不断普及与发展,相关的软件开发技术也越来越受到人们所重视.Android作为全球最受欢迎的移动智能终端平台.图形图像处理技术在Android中非常重要,特别是在开发益智类游戏或者2 ...

  6. opengl、opengl es、webgl介绍与opengl开发入门

    1.OpenGL OpenGL(英语:Open Graphics Library,译名:开放图形库或者"开放式图形库")常用于CAD.虚拟现实.科学可视化程序和电子游戏开发.Ope ...

  7. Android游戏开发–粒子爆炸

    有没有想过爆炸是如何产生的? 让我们绕个弯路,尝试实现基本的粒子爆炸. 爆炸不过是一堆散布在屏幕上的,源自单个点的粒子(无论是像素,小形状还是图像). 为了方便起见,并非总是如此,而是为了简洁起见,我 ...

  8. Android游戏开发–雪碧动画

    如果到目前为止您仍然关注该系列,我们将在处理触摸,显示图像和移动它们方面广为人知. 但是,动态图像看起来很呆板,因为它看起来确实是假的和业余的. 为了给角色一些生活,我们将需要做更多的事情. 这就是动 ...

  9. Android游戏开发–游戏循环

    游戏循环是每个游戏的心跳. 到目前为止,我们仅使用了非常简单的一种(您可以在此处找到),无法控制我们更新游戏状态的速度或速度以及要渲染的帧. 概括地说,最基本的游戏循环是while循环,该循环一直执行 ...

最新文章

  1. 《2019中国硬科技发展白皮书》发布,中美硬科技创新指数PK
  2. python3报错处理:UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-1
  3. python安装教程windows-windows上安装Anaconda和python的教程详解
  4. java程序设计p75_java语言程序设计实用教程第四讲控制结构.ppt
  5. 简单解决Ubuntu修改locale的问题
  6. Hihocoder 最近公用祖先三 在线LCA
  7. java中会用到二进制吗,java中的二进制运算以使用场景
  8. 将Matplotlib嵌入wxPython的GUI界面中
  9. php源码 乱码 通达oa_PHPOA源码中小企业OA办公系统流程ERP CRM HR微信钉钉泛微通达oa...
  10. 还敢乱写代码??腾讯 Code Review 规范出炉!
  11. 如何在linux运行exe文件,在Deepin系统下直接运行exe文件的方法
  12. 缺少tlqcu_qcu1.conf文件
  13. iOS终于能微信双开了!原理竟然是这样…
  14. 浅谈Service中实现弹出对话框的坑
  15. Educoder 机器学习 决策树使用之使用决策树预测隐形眼镜类型
  16. vscode 报错:Your shell has not been properly configured to use ‘conda activate‘
  17. 【手游】梦幻西游手游 美术资源加密分析
  18. oracle是dbms还是dbs,Oracle学习笔记三——DBS
  19. iOS/Android 王者荣耀更换战区
  20. MAC OSX打开文件提示cannot be opened because the developer cannot be verified问题的解决办法

热门文章

  1. 读书笔记——【决胜B端:产品经理升级之路】
  2. 算法——指数取模运算(蒙哥马利算法)
  3. 斯金纳的行为主义和华生的人格理论和多拉德和米勒的刺激反应理论和罗特的社会学习理论
  4. 消融实验(ablation experiment)
  5. postgresql 日志配置
  6. 企业SCRM与CRM功能区别
  7. 新年送福!陀螺财经新年专属红包封面限量发放,等你来领!
  8. 什么是MACD的顶背离和底背离
  9. 中国大学生计算机设计大赛三等奖什么水平,我校学子荣获中国大学生计算机设计大赛全国总决赛三等奖...
  10. openFrameworks教程(一)