目录

  • 一.前言

    • 1.OpenGL
    • 2.OpenGL ES
    • 3.平台差异
  • 二. EAGLContext 和 EGLContext 简介
    • 1.EGLContext
    • 2.EAGLContext
  • 三. EGL 绘制流程简介
  • 四. EAGL 绘制
  • 五.猜你喜欢

零基础 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 编程

一.前言

在讲解 EAGLContext 和 EGLContext 之前,我们需要先说明一下 OpenGL 和 OpenGL ES 的关系

1.OpenGL

OpenGL(全写 Open Graphics Library)是个定义了一个跨编程语言、跨平台的应用程序接口(API)的规格,它用于生成二维、三维图像。OpenGL 广泛用于 PC 平台(windows、Linux、Unix、Mac OS X);

2.OpenGL ES

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

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

**OpenGL ES 是个与硬件无关的软件接口,可以在不同的平台如 Windows、Unix、Linux、MacOS、IOS、Android 之间进行移植。**因此,支持 OpenGL ES 的软件具有很好的移植性,可以获得非常广泛的应用。

3.平台差异

OpenGL 和 OpenGL ES 在不同平台上有不同的机制以关联窗口系统

1. OpenGL 在 Windows 上是 WGL ,在 Linux 上是 GLX ,在 Apple OS 上是 AGL ;

2. OpenGL ES 在 Windows / Android 上是 EGL,在 IOS 中是 EAGL;

二. EAGLContext 和 EGLContext 简介

1.EGLContext

Windows / Android 上是 EGL ,EGL 是渲染 API(如 OpenGL ES)和原生窗口系统之间的接口。通常来说,OpenGL 是一个操作 GPU 的 API,它通过驱动向 GPU 发送相关指令,控制图形渲染管线状态机的运行状态,但是当涉及到与本地窗口系统进行交互时,就需要这么一个中间层,因此 EGL 被设计出来,作为 OpenGL 和原生窗口系统之间的桥梁,且它与平台无关的。

EGLContext 创建 OpenGL ES 上下文:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:OpenGL ES OpenGL ES EAGLContext 和 EGLContext
//@Time:2022/08/04 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************///创建上下文
EGLint contextAttribs[] = { EGL_CONTEXT_CLIENT_VERSION, 3, EGL_NONE };
EGLContext  context = eglCreateContext ( display , config , EGL_NO_CONTEXT, contextAttribs );//绑定上下文
eglMakeCurrent ( display , surface , surface , context )

2.EAGLContext

**IOS 平台为 OpenGL 提供的实现是 EAGL,**OpenGL ES 系统与本地窗口(UIKit)桥接由 EAGL 上下文系统实现。

IOS EAGLContext 创建 OpenGL ES 上下文:

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

三. EGL 绘制流程简介

  1. 获取 EGL Display 对象:eglGetDisplay
  2. 初始化与 EGLDisplay 之间的连接:eglInitialize
  3. 获取 EGLConfig 对象:eglChooseConfig / eglGetConfigs
  4. 创建 EGLContext 实例:eglCreateContext
  5. 创建 EGLSurface 实例:eglCreateWindowSurface / eglCreatePbufferSurface
  6. 连接 EGLContext 和 EGLSurface 上下文 eglMakeCurrent
  7. 使用 OpenGL ES API 绘制图形:gl_*
  8. 切换 front buffer 和 back buffer 显示:eglSwapBuffer
  9. 断开并释放与 EGLSurface 关联的 EGLContext 对象:eglRelease
  10. 删除 EGLSurface 对象 eglDestroySurface
  11. 删除 EGLContext 对象 eglDestroyContext
  12. 终止与 EGLDisplay 之间的连接

EGL OpenGL ES 绘制可以参考以下代码:

  1. Windows OpenGL ES 调节亮度 Demo
  2. Windows OpenGL ES 调节曝光 Demo
  3. Windows OpenGL ES 调节对比度 Demo
  4. Windows OpenGL ES 调节饱和度 Demo
  5. Windows OpenGL ES 调节伽马线 Demo

四. EAGL 绘制

IOS EAGL OpenGL ES 绘制可以参考以下代码

  1. GPUImageBrightnessFilter //亮度
  2. GPUImageExposureFilter //曝光
  3. GPUImageContrastFilter //对比度
  4. GPUImageSaturationFilter //饱和度
  5. GPUImageGammaFilter //伽马线
  6. GPUImageColorInvertFilter //反色
  7. GPUImageSepiaFilter //褐色(怀旧)
  8. GPUImageLevelsFilter //色阶
  9. GPUImageGrayscaleFilter //灰度

五.猜你喜欢

  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
  14. OpenGL ES EGL eglCreateContext
  15. OpenGL ES EGL eglCreateWindowSurface
  16. OpenGL ES EGL eglCreatePbufferSurface
  17. OpenGL ES EGL eglMakeCurrent
  18. OpenGL ES EGL eglSwapBuffer
  19. OpenGL ES EGL eglDestroySurface
  20. OpenGL ES EGL eglDestroyContext
  21. OpenGL ES EGL eglQueryContext
  22. OpenGL ES EAGLContext 和 EGLContext

OpenGL ES EAGLContext 和 EGLContext相关推荐

  1. OpenGL ES glut glew glfw glad freeglut

    目录 一.简介 1.freeglut 2.glew 3.glut 4.glfw 5.glad 二.分类 1.窗口管理 2.函数加载 三.组合使用 1.freeglut + glew 2.glfw + ...

  2. OpenGL ES glfw 下载和使用

    目录 一.glfw 简介 二.glfw 下载 三.glfw 编译 四.glfw 使用 1.OpenGL glfw + glad 效果演示 2.OpenGL glfw + glad <源码下载&g ...

  3. OpenGL ES freeglut 下载和使用

    目录 一.freeglut 简介 二.freeglut 下载 五.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基 ...

  4. OpenGL ES glut 下载和使用

    目录 一.glut 简介 二.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推 ...

  5. 【OpenGL ES】OpenGL ES简介

    [参考-khronos]https://www.khronos.org/opengles/ 1.简介 OpenGL ES(OpenGL for Embeded System)是OpenGL(Open ...

  6. 图片和图形之OpenGL ES(8)

    原文 概要 Android包含对开放图形库(OpenGL®),特别是OpenGL ES API的高性能2D和3D图形的支持.OpenGL是一个跨平台的图形API,它为3D图形处理硬件指定了一个标准的软 ...

  7. 以OpenGL/ES视角介绍gfx-hal(Vulkan) Framebuffer接口使用

    文档列表见:Rust 移动端跨平台复杂图形渲染项目开发系列总结(目录) 草稿状态 以OpenGL/ES Framebuffer角度看,如果用gfx-hal(Vulkan)接口实现类似OpenGL/ES ...

  8. 利用JNI技术在Android中调用C++形式的OpenGL ES 2.0函数

    1.                 打开Eclipse,File-->New-->Project--->Android-->AndroidApplication Projec ...

  9. 【Android OpenGL ES】阅读hello-gl2代码(二)Java代码

    AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...

  10. 学习OpenGL ES之透明和混合

    获取示例代码 本文主要讲解OpenGL ES对于透明颜色的处理,在例子中我绘制了三个平面,分别赋予绿色半透明纹理,红色半透明纹理,和不透明纹理. 首先为这三张图生成纹理. - (void)genTex ...

最新文章

  1. 不称职Leader的10个特征,看看你中几条?
  2. HASH算法不是加密算法
  3. java通过ssh读取日志_IDEA+java通过SSH来进行分析日志,实现UI自动化动态验证码登录...
  4. oracle clob raw 转换,ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小...
  5. Tomcat7.0安装配置
  6. 设置windows xp 调试
  7. python脚本中执行另一个脚本_如何用python调用另一个python脚本?
  8. GDCM:gdcm::StreamImageWriter的测试程序
  9. SAP CRM和Hybris里的Product Variant
  10. LeetCode 110. 平衡二叉树思考分析
  11. Taro+react开发(21)--注意参数格式
  12. 单片机c语言 外部中断,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
  13. 树莓派相机操作 —— luvcview 的安装、raspistill:摄像头命令
  14. php : 开发记录(2017-03-10)
  15. 字符串格式参数的日期比较函数
  16. 在容器服务kubernetes上配置https
  17. Winform 五种常用对话框控件的简单使用
  18. 浏览器下载大文件时下载完成但大小对不上
  19. 新手20天自学吉他入门
  20. 优秀的 Verilog/FPGA开源项目介绍(二十九)- 开源网站

热门文章

  1. kubernetes Downward API
  2. 小米手机访问电脑共享文件_小米手机共享文件夹在哪里
  3. Java如何生成彩色二维码(利用zxing包)
  4. django bootstrap3
  5. Bootstrap3和Bootstrap4区别
  6. puts 和 printf %s
  7. 深度学习框架江湖群侠传
  8. 计算机的桌面偏上怎么调整,电脑桌面软件太靠边怎么办
  9. MacBook外接显示器的显示模式介绍及设置说明(分屏/多屏)
  10. 2021-2027全球及中国气提系统行业研究及十四五规划分析报告