OpenGL ES Windows 搭建環境(MFC版本)

目錄

零基礎 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 的配置屬性

EGLContextOpenGL ES 圖形上下文

  1. 獲取 EGL Display 對象:eglGetDisplay
  2. 初始化與 EGLDisplay 之間的連接:eglInitialize
  3. 獲取 EGLConfig 對象:eglChooseConfig / eglGetConfigs
  4. 創建 EGLContext 實例:eglCreateContext
  5. 創建 EGLSurface 實例:eglCreateWindowSurface / eglCreatePbufferSurface
  6. 連接 EGLContext 和 EGLSurface 上下文 eglMakeCurrent
  7. 使用 OpenGL ES API 繪製圖形:gl_*
  8. 切換 front buffer 和 back buffer 顯示:eglSwapBuffer
  9. 斷開並釋放與 EGLSurface 關聯的 EGLContext 對象:eglRelease
  10. 刪除 EGLSurface 對象 eglDestroySurface
  11. 刪除 EGLContext 對象 eglDestroyContext
  12. 終止與 EGLDisplay 之間的連接

四.OpenGL ES 案例

demo 下載:《Windows OpenGL ES 圖像白平衡色溫》

demo 下載:《Windows OpenGL ES 圖像綠幕摳圖》

demo 下載:《Windows OpenGL ES 圖像色調》

demo 下載:《Windows OpenGL ES 圖像色彩替換》

demo 下載:《Windows OpenGL ES 圖像飽和度調節》

五.依賴動態庫

  1. d3dcompiler_47.dll
  2. libEGL.dll
  3. libGLESv2.dll

六.猜你喜歡

  1. OpenGL ES 簡介
  2. OpenGL ES 版本介紹
  3. OpenGL ES 2.0 和 3.0 區別
  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
  23. OpenGL ES OpenGL WebGL EGL WGL 區別
  24. OpenGL ES freeglut 下載和使用
  25. OpenGL ES glew 下載和使用
  26. OpenGL ES glut 下載和使用
  27. OpenGL ES glfw 下載和使用
  28. OpenGL ES glad 下載和使用
  29. OpenGL ES glut glew glfw glad freeglut
  30. OpenGL ES google angle
  31. OpenGL Windows 搭建環境(MFC 版本)
  32. OpenGL ES Windows 搭建環境(MFC 版本)

本文由博客 - 猿說編程 猿說編程 發佈!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章