一.简介
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
总之,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 下载和使用》
参考:
https://juejin.cn/post/7166792402034753544
https://www.codersrc.com/archives/18812.html
https://www.khronos.org/opengl/wiki/Related_toolkits_and_APIs