OpenGL ES EAGLContext 和 EGLContext
目录
- 一.前言
- 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 绘制流程简介
- 获取 EGL Display 对象:eglGetDisplay
- 初始化与 EGLDisplay 之间的连接:eglInitialize
- 获取 EGLConfig 对象:eglChooseConfig / eglGetConfigs
- 创建 EGLContext 实例:eglCreateContext
- 创建 EGLSurface 实例:eglCreateWindowSurface / eglCreatePbufferSurface
- 连接 EGLContext 和 EGLSurface 上下文 eglMakeCurrent
- 使用 OpenGL ES API 绘制图形:gl_*
- 切换 front buffer 和 back buffer 显示:eglSwapBuffer
- 断开并释放与 EGLSurface 关联的 EGLContext 对象:eglRelease
- 删除 EGLSurface 对象 eglDestroySurface
- 删除 EGLContext 对象 eglDestroyContext
- 终止与 EGLDisplay 之间的连接
EGL OpenGL ES 绘制可以参考以下代码:
- Windows OpenGL ES 调节亮度 Demo
- Windows OpenGL ES 调节曝光 Demo
- Windows OpenGL ES 调节对比度 Demo
- Windows OpenGL ES 调节饱和度 Demo
- Windows OpenGL ES 调节伽马线 Demo
四. EAGL 绘制
IOS EAGL OpenGL ES 绘制可以参考以下代码:
- GPUImageBrightnessFilter //亮度
- GPUImageExposureFilter //曝光
- GPUImageContrastFilter //对比度
- GPUImageSaturationFilter //饱和度
- GPUImageGammaFilter //伽马线
- GPUImageColorInvertFilter //反色
- GPUImageSepiaFilter //褐色(怀旧)
- GPUImageLevelsFilter //色阶
- GPUImageGrayscaleFilter //灰度
五.猜你喜欢
- OpenGL ES 简介
- OpenGL ES 版本介绍
- OpenGL ES 2.0 和 3.0 区别
- OpenGL ES 名词解释(一)
- OpenGL ES 名词解释(二)
- OpenGL ES GLSL 着色器使用过程
- OpenGL ES EGL 简介
- OpenGL ES EGL 名词解释
- OpenGL ES EGL eglGetDisplay
- OpenGL ES EGL eglInitialize
- OpenGL ES EGL eglGetConfigs
- OpenGL ES EGL eglChooseConfig
- OpenGL ES EGL eglGetError
- OpenGL ES EGL eglCreateContext
- OpenGL ES EGL eglCreateWindowSurface
- OpenGL ES EGL eglCreatePbufferSurface
- OpenGL ES EGL eglMakeCurrent
- OpenGL ES EGL eglSwapBuffer
- OpenGL ES EGL eglDestroySurface
- OpenGL ES EGL eglDestroyContext
- OpenGL ES EGL eglQueryContext
- OpenGL ES EAGLContext 和 EGLContext
OpenGL ES EAGLContext 和 EGLContext相关推荐
- OpenGL ES glut glew glfw glad freeglut
目录 一.简介 1.freeglut 2.glew 3.glut 4.glfw 5.glad 二.分类 1.窗口管理 2.函数加载 三.组合使用 1.freeglut + glew 2.glfw + ...
- OpenGL ES glfw 下载和使用
目录 一.glfw 简介 二.glfw 下载 三.glfw 编译 四.glfw 使用 1.OpenGL glfw + glad 效果演示 2.OpenGL glfw + glad <源码下载&g ...
- OpenGL ES freeglut 下载和使用
目录 一.freeglut 简介 二.freeglut 下载 五.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基 ...
- OpenGL ES glut 下载和使用
目录 一.glut 简介 二.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推 ...
- 【OpenGL ES】OpenGL ES简介
[参考-khronos]https://www.khronos.org/opengles/ 1.简介 OpenGL ES(OpenGL for Embeded System)是OpenGL(Open ...
- 图片和图形之OpenGL ES(8)
原文 概要 Android包含对开放图形库(OpenGL®),特别是OpenGL ES API的高性能2D和3D图形的支持.OpenGL是一个跨平台的图形API,它为3D图形处理硬件指定了一个标准的软 ...
- 以OpenGL/ES视角介绍gfx-hal(Vulkan) Framebuffer接口使用
文档列表见:Rust 移动端跨平台复杂图形渲染项目开发系列总结(目录) 草稿状态 以OpenGL/ES Framebuffer角度看,如果用gfx-hal(Vulkan)接口实现类似OpenGL/ES ...
- 利用JNI技术在Android中调用C++形式的OpenGL ES 2.0函数
1. 打开Eclipse,File-->New-->Project--->Android-->AndroidApplication Projec ...
- 【Android OpenGL ES】阅读hello-gl2代码(二)Java代码
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- 学习OpenGL ES之透明和混合
获取示例代码 本文主要讲解OpenGL ES对于透明颜色的处理,在例子中我绘制了三个平面,分别赋予绿色半透明纹理,红色半透明纹理,和不透明纹理. 首先为这三张图生成纹理. - (void)genTex ...
最新文章
- 不称职Leader的10个特征,看看你中几条?
- HASH算法不是加密算法
- java通过ssh读取日志_IDEA+java通过SSH来进行分析日志,实现UI自动化动态验证码登录...
- oracle clob raw 转换,ORA-22835 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小...
- Tomcat7.0安装配置
- 设置windows xp 调试
- python脚本中执行另一个脚本_如何用python调用另一个python脚本?
- GDCM:gdcm::StreamImageWriter的测试程序
- SAP CRM和Hybris里的Product Variant
- LeetCode 110. 平衡二叉树思考分析
- Taro+react开发(21)--注意参数格式
- 单片机c语言 外部中断,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
- 树莓派相机操作 —— luvcview 的安装、raspistill:摄像头命令
- php : 开发记录(2017-03-10)
- 字符串格式参数的日期比较函数
- 在容器服务kubernetes上配置https
- Winform 五种常用对话框控件的简单使用
- 浏览器下载大文件时下载完成但大小对不上
- 新手20天自学吉他入门
- 优秀的 Verilog/FPGA开源项目介绍(二十九)- 开源网站