零基礎(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)系
OpenGL(全寫 OpenGraphicsLibrary)是個定義了一個跨編程語言、跨平臺的應(yīng)用程序接口(API)的規(guī)格,它用于生成二維、三維圖像。OpenGL 廣泛用于 PC 平臺(windows、Linux、Unix、Mac OS X);
早先定義 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)用。
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;
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 )
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 OpenGL ES 繪制可以參考以下代碼:
IOS EAGL OpenGL ES 繪制可以參考以下代碼:
本文由博客 - 猿說編程 猿說編程 發(fā)布!