目錄 一.OpenGL 和 OpenGL ES 1.OpenGL 2.OpenGL ES 二.EGL 和 WGL 三.OpenGL ES EGL API 簡介 四.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 函數
零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES GPUImage 使用
零基礎 OpenGL ES 學習路線推薦 : OpenGL ES 學習目錄 >> OpenGL ES GLSL 編程
一.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 不支持)
二.EGL 和 WGL
EGL 是渲染 API(如 OpenGL ES)和原生視窗系統之間的介面。通常來說,OpenGL 是一個操作 GPU 的 API,它通過驅動向 GPU 發送相關指令,控製圖形渲染管線狀態機的運行狀態,但是當涉及到與本地視窗系統進行交互時,就需要這麼一個中間層,因此 EGL 被設計出來,作為 OpenGL 和原生視窗系統之間的橋梁,且它與平臺無關的。
在不同平臺上有不同的機制以關聯視窗系統,在 Windows 上是 WGL ,在 Linux 上是 GLX ,在 Apple OS 上是 AGL 等。
EGL 則是平臺上 WGL / GLX / AGL 的等價物。EGL 假設 OS 會提供視窗系統,但 EGL 與平臺無關,並不局限於任何特定的視窗系統,所有用到本地視窗系統的地方都用屏蔽指針來處理,這就是易於移植的關鍵。
簡單點來講:在 Windows OPenGL 使用 WGL,在 Windows OPenGL ES 使用 EGL
三.OpenGL ES EGL API 簡介
EGLNativeDisplayType – 系統顯示類型,標識你所開發設備的物理屏幕,DX/OPenGL ES/Metal/Vulkan….
EGLNativeWindowType – 系統視窗,渲染顯示的視窗句柄
EGLDisplay – 關聯 EGLNativeDisplayType 系統物理屏幕的通用數據類型,是平臺上 WGL / GLX / AGL 的等價物
EGLSurface – 渲染區域,相當於 OpenGL ES 繪圖的畫布 (一塊記憶體空間),用戶想繪製的信息首先都要先繪製到 EGLSurface 上,然後通過 EGLDisplay 顯示
EGLConfig – 對 EGLSurface 的 EGL 配置,可以理解為繪製目標 framebuffer 的配置屬性
EGLContext – OpenGL ES 圖形上下文
- 獲取 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 之間的連接
四.OpenGL ES 案例
demo 下載:《Windows OpenGL ES 圖像白平衡色溫》
demo 下載:《Windows OpenGL ES 圖像綠幕摳圖》
demo 下載:《Windows OpenGL ES 圖像色調》
demo 下載:《Windows OpenGL ES 圖像色彩替換》
demo 下載:《Windows OpenGL ES 圖像飽和度調節》
五.依賴動態庫
- d3dcompiler_47.dll
- libEGL.dll
- libGLESv2.dll
六.猜你喜歡
- 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 OpenGL WebGL EGL WGL 區別
- OpenGL ES freeglut 下載和使用
- OpenGL ES glew 下載和使用
- OpenGL ES glut 下載和使用
- OpenGL ES glfw 下載和使用
- OpenGL ES glad 下載和使用
- OpenGL ES glut glew glfw glad freeglut
- OpenGL ES google angle
- OpenGL Windows 搭建環境(MFC 版本)
- OpenGL ES Windows 搭建環境(MFC 版本)
本文由博客 - 猿說編程 猿說編程 發佈!