当前位置: 首页 > backend >正文

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

在这里插入图片描述

什么是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.xdnf.cn/news/11433.html

相关文章:

  • ContentProvider的相关知识总结
  • 新加坡云服务器推荐 - 适合跨境外贸等业务
  • 2 v11补丁安装_老款macbook机型欺骗补丁强制安装macOS11 Big Sur图文详解
  • Linux下权限的修改-JDK的配置-文件的常见操作
  • Java学习 布局管理器之GridLayout(网格布局)
  • 企业最新几种好用的数据同步工具对比
  • Qt 多线程的几种实现方式
  • Linux系统三步安装QQ
  • C/C++网络编程
  • JSTL-核心标签库
  • 动态域名内网穿透(永久免费)
  • 设计模式七大原则-迪米特法原则
  • 安全小课堂丨什么是暴力破解?如何防止暴力破解
  • 谷歌浏览器、Yandex浏览器使用体验分享
  • 光流法(optical flow)简介
  • 13800138000来电?手机管家:小心诈骗
  • Windows 10 离线安装 .NET Framework 3.5 的方法和技巧
  • WISP模式
  • waterdrop介绍
  • CreateThread()函数及_beginthreadex()函数
  • C++ ofstream和ifstream详细用法
  • 使用Latex制作分享,演讲,Presentation用的Slides,PPT——Beamer教程
  • .htaccess语法讲解
  • [Linux系列]Chrony时间同步服务器
  • 下载了鲁大师,打开goolgle浏览器弹出360导航页
  • Web前端开发【新手入门指南】
  • JFreeChart 使用介绍
  • maven 环境变量的配置
  • 使用Collections.shuffle打乱集合顺序
  • 曼彻斯特编码