真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

OpenGL ES EAGLContext 和 EGLContext

零基礎(chǔ) OpenGL ES 學習路線推薦 :OpenGL ES 學習目錄 >>OpenGL ES 基礎(chǔ)

成都創(chuàng)新互聯(lián)公司成立與2013年,先為揚中等服務(wù)建站,揚中等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為揚中企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

零基礎(chǔ) OpenGL ES 學習路線推薦 :OpenGL ES 學習目錄 >>OpenGL ES 特效

零基礎(chǔ) OpenGL ES 學習路線推薦 :OpenGL ES 學習目錄 >>OpenGL ES 轉(zhuǎn)場

零基礎(chǔ) OpenGL ES 學習路線推薦 :OpenGL ES 學習目錄>>OpenGL ES 函數(shù)

零基礎(chǔ) OpenGL ES 學習路線推薦 :OpenGL ES 學習目錄>>OpenGL ES GPUImage 使用

零基礎(chǔ) OpenGL ES 學習路線推薦 :OpenGL ES 學習目錄>>OpenGL ES GLSL 編程

一.前言

在講解 EAGLContext 和 EGLContext 之前,我們需要先說明一下 OpenGL 和 OpenGL ES 的關(guān)系

1.OpenGL

OpenGL(全寫 OpenGraphicsLibrary)是個定義了一個跨編程語言、跨平臺的應(yīng)用程序接口(API)的規(guī)格,它用于生成二維、三維圖像。OpenGL 廣泛用于 PC 平臺(windows、Linux、Unix、Mac OS X);

2.OpenGL ES

早先定義 OpenGLES 是 OpenGL 的嵌入式設(shè)備版本,用于移動端平臺(Android、iOS),但由于嵌入式設(shè)備要求的是高性能,所以一些其它純追求高性能的設(shè)備也開始用這種 API 方式;

OpenGL ES 是 OpenGL 的子集,區(qū)別在于 OpenGL ES 刪減了 OpenGL 一切低效能的操作方式,有高性能的決不留低效能的,即只求效能不求兼容性。(即:OpenGL ES 能實現(xiàn)的,OpenGL 也能實現(xiàn);OpenGL 部分 API,OpenGL ES 不支持)

OpenGL ES 是個與硬件無關(guān)的軟件接口,可以在不同的平臺如 Windows、Unix、Linux、MacOS、IOS、Android 之間進行移植。因此,支持 OpenGL ES 的軟件具有很好的移植性,可以獲得非常廣泛的應(yīng)用。

3.平臺差異

OpenGL 和 OpenGL ES 在不同平臺上有不同的機制以關(guān)聯(lián)窗口系統(tǒng)

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)和原生窗口系統(tǒng)之間的接口。通常來說,OpenGL 是一個操作 GPU 的 API,它通過驅(qū)動向 GPU 發(fā)送相關(guān)指令,控制圖形渲染管線狀態(tài)機的運行狀態(tài),但是當涉及到與本地窗口系統(tǒng)進行交互時,就需要這么一個中間層,因此 EGL 被設(shè)計出來,作為 OpenGL 和原生窗口系統(tǒng)之間的橋梁,且它與平臺無關(guān)的。

EGLContext 創(chuàng)建 OpenGL ES 上下文:

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:OpenGL ES OpenGL ES EAGLContext 和 EGLContext
//@Time:2022/08/04 07:30
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/


//創(chuàng)建上下文
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 提供的實現(xiàn)是 EAGL,OpenGL ES 系統(tǒng)與本地窗口(UIKit)橋接由 EAGL 上下文系統(tǒng)實現(xiàn)。

IOS EAGLContext 創(chuàng)建 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. 創(chuàng)建 EGLContext 實例:eglCreateContext
  5. 創(chuàng)建 EGLSurface 實例:eglCreateWindowSurface / eglCreatePbufferSurface
  6. 連接 EGLContext 和 EGLSurface 上下文 eglMakeCurrent
  7. 使用 OpenGL ES API 繪制圖形:gl_*
  8. 切換 front buffer 和 back buffer 顯示:eglSwapBuffer
  9. 斷開并釋放與 EGLSurface 關(guān)聯(lián)的 EGLContext 對象:eglRelease
  10. 刪除 EGLSurface 對象 eglDestroySurface
  11. 刪除 EGLContext 對象 eglDestroyContext
  12. 終止與 EGLDisplay 之間的連接

EGL OpenGL ES 繪制可以參考以下代碼:

  1. Windows OpenGL ES 調(diào)節(jié)亮度 Demo
  2. Windows OpenGL ES 調(diào)節(jié)曝光 Demo
  3. Windows OpenGL ES 調(diào)節(jié)對比度 Demo
  4. Windows OpenGL ES 調(diào)節(jié)飽和度 Demo
  5. Windows OpenGL ES 調(diào)節(jié)伽馬線 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 區(qū)別
  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

本文由博客 - 猿說編程 猿說編程 發(fā)布!


網(wǎng)頁標題:OpenGL ES EAGLContext 和 EGLContext
當前地址:http://weahome.cn/article/dsoiese.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部