OpenGL ES glut glew glfw glad freeglut

目錄

零基礎 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 編程

一.簡介

1.freeglut

freeglut 是 GLUT (OpenGL Utility Toolkit)的一個免費開源替代庫。在程序中負責創建窗口、初始化 OpenGL 上下文和處理輸入事件所需的所有系統特定的雜務,從而允許創建真正可移植的 OpenGL 程序。

在 OpenGL 項目開發中,freeglut 一般搭配 glew 一起使用;

2.glew

OpenGL Extension Wrangler Library (GLEW) 是一個跨平臺的開源 C/C++ 擴展加載庫。GLEW 提供了有效的運行時機制來確定目標平臺支持哪些 OpenGL 擴展。OpenGL 核心和擴展功能在單個頭文件中公開。

不同的顯卡公司,也會發布一些只有自家顯卡才支持的擴展函數,你要想用這數涵數,不得不去尋找最新的 glext.h ,有了 GLEW 擴展庫,你就再也不用爲找不到函數的接口而煩惱,因爲 GLEW 能自動識別你的平臺所支持的全部 OpenGL 高級擴展函數。也就是說,只要包含一個 glew.h 頭文件,你就能使用 gl glu glext wgl glx 的全部函數。

glew 包含了 OpenGL 所需的核心,glew 作用:用來找 openGL 的函數,並初始化,這樣我們就能直接調用 OpenGL 的函數了。

3.glut

OpenGL Utility Toolkit (GLUT) 主要包括窗口操作函數,窗口初始化、窗口大小、窗口位置等函數;回調函數:響應刷新消息、鍵盤消息、鼠標消息、定時器函數等;創建複雜的三維物體;菜單函數;程序運行函數。

glut 版本太老了,理應被時代淘汰,不推薦使用。freeglut 完全兼容 glut,是 glut 的代替品

4.glfw

官方解釋:glfw is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan development on the desktop. It provides a simple API for creating windows, contexts and surfaces, receiving input and events.

glfw 開發目的是用於替代 glut 的。它是一個輕量級的,開源的,跨平臺的 library。支持 OpenGL 及 OpenGL ES ,用來管理窗口,讀取輸入,處理事件等。

**glfw 優勢:**glut 太老了,最後一個版本還是 90 年代的。freeglut 完全兼容 glut ,算是 glut 的代替品,功能齊全,但是 bug 太多。穩定性也不好(不是我說的啊,不過 3.0 版本還是挺穩定的),所以 glfw 應運而生。

總之,glfw 是 glut / freegult 的升級和改進。glfw 是用來顯示窗口和捕捉窗口事件的一套 API,可以理解成 Qt 和 windows 平臺的 WPF 。

OpenGL 只是一套控制 GPU 的規則,並沒有對於跨平臺窗口顯示和事件進行規定,所以需要一個顯示顯卡渲染的窗口,這就是 glfw 的作用。

在 OpenGL 項目開發中,glfw 一般搭配 glad 一起使用;

5.glad

**GLEW 擴展庫作用:**不同的顯卡公司,也會發布一些只有自家顯卡才支持的擴展函數,你要想用這數涵數,不得不去尋找最新的 glext.h ,有了 GLEW 擴展庫,你就再也不用爲找不到函數的接口而煩惱,因爲 GLEW 能自動識別你的平臺所支持的全部 OpenGL 高級擴展函數。也就是說,只要包含一個 glew.h 頭文件,你就能使用 gl glu glext wgl glx 的全部函數。

glad 是繼 gl3w,glew 之後,當前最新的用來訪問 OpenGL 規範接口的第三方庫。簡單說 glad 是 glew 的升級版,就是說 glew 比較老,glad 比較新,Windows 中 使用:

// 定義函數原型
typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
// 找到正確的函數並賦值給函數指針
GL_GENBUFFERS glGenBuffers  = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
// 現在函數可以被正常調用了
GLuint buffer;
glGenBuffers(1, &buffer);

二.分類

1.窗口管理

老接口glut / freeglut

新接口glfw

2.函數加載

老接口glew
新接口glad

三.組合使用

1.freeglut + glew

該方式是經典組合,可以參考以下案例:

file

demo 下載:Windows OpenGL 調節亮度 Demo

file

demo 下載:Windows OpenGL 調節曝光 Demo

file

demo 下載:Windows OpenGL 調節對比度 Demo

file

demo 下載:Windows OpenGL 調節飽和度 Demo

file

demo 下載:Windows OpenGL 調節伽馬線 Demo

2.glfw + glew

該方式是非主流組合,一般不會這樣搭配

3.glfw + glad

該方式屬於比較新潮流,可以參考方案《OpenGL ES glfw 下載和使用》

file

四.猜你喜歡

  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

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

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