目錄
零基礎 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 程序。
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) 主要包括窗口操作函數,窗口初始化、窗口大小、窗口位置等函數;回調函數:響應刷新消息、鍵盤消息、鼠標消息、定時器函數等;創建複雜的三維物體;菜單函數;程序運行函數。
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 的作用。
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
該方式是經典組合,可以參考以下案例:
demo 下載:Windows OpenGL 調節亮度 Demo
demo 下載:Windows OpenGL 調節曝光 Demo
demo 下載:Windows OpenGL 調節對比度 Demo
demo 下載:Windows OpenGL 調節飽和度 Demo
demo 下載:Windows OpenGL 調節伽馬線 Demo
2.glfw + glew
該方式是非主流組合,一般不會這樣搭配
3.glfw + glad
該方式屬於比較新潮流,可以參考方案:《OpenGL ES glfw 下載和使用》
四.猜你喜歡
- 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
本文由博客 - 猿說編程 猿說編程 發佈!