OpenGL的窗口和交互工具包项目

OpenGL的窗口和交互工具包项目_第1张图片

一.简介

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

总之,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

该方式是经典组合,可以参考以下案例:

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

你可能感兴趣的:(OpenGL应用,c++,OpenGL)