目錄
- 一.前言
- 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
本文由博客 - 猿說編程 猿說編程 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/532507.html
標籤:C
上一篇:<六>指向類成員的指標
下一篇:跳一跳
