什么是 Glew、Glut 和 glfw3?哪些在 Opengl 3/4 中已被弃用

6 c++ opengl

我一直在网上阅读关于 OpenGl 3 和 4 与以前的版本有何不同。

一些教程要求:

#include <GL/glew.h>
Run Code Online (Sandbox Code Playgroud)

其他人将拥有:

#include <GLUT/glut.h>
Run Code Online (Sandbox Code Playgroud)

什么是GlewGlutglfw3?哪些已弃用,哪些在现代 opengl 中使用?

Nic*_*erg 7

GLEW(或 OpenGL Extension Wrangler)几乎是一个加载程序,可帮助您以“简单”的方式管理 OpenGL。一般来说,OpenGL 库的函数已经在您的计算机上,以二进制形式 (.dll) 包含在您的图形驱动程序中,而 GLEW 是您和已经存在于其中的OpenGL 之间的门户。它以一种方便您使用的方式提供了OpenGL的功能。这就是 GLEW 开发人员所说的“加载函数指针”的意思 - 访问计算机的图形驱动程序并从中加载特定函数,以便您可以在 C++ 代码中使用它们。

注意:你实际上可以自己做 GLEW 做的事情,正如 t.niese 在评论部分指出的那样,但这对初学者来说是一个很大的挑战,因此使用 GLEW 更方便。

另一方面,GLFW(或图形库框架)是一个库,可帮助您管理诸如窗口、其大小、参数、基本输入和事件等内容。GLEW 需要设置一个窗口和一个有效的 OpenGL 上下文,而这正是 GLFW 派上用场的地方。

有趣的是,这些库不仅是为了让您的开发生活更轻松,而且让您的部署速度更快。GLEW 和 GLFW 是跨平台的,因此您不必在不同平台上编写同一应用程序的不同版本。

实践表明,GLEW/GLAD + GLFW 是基于 OpenGL 的现代计算机图形的常见用途。但是,您可以根据自己的需要,出于某种原因选择其他库。但是一般的方法是使用这些,因为它们支持最新版本的 OpenGL,并且总是得到更新。

如果您是 OpenGL 的新手并想学习它的基础知识,您应该查看这个youtube 播放列表。有一个简单且非常快速的 OpenGL 教程,并且作为开发人员,您绝对应该知道一些事情。玩得开心!


编辑

GLUT 和 GLFW 基本相同,但您需要知道的是,最初的 GLUT 已经不受支持 20 年,并且有一个免费的开源替代方案,称为 freeglut。所以,我想这就是您所说的“已弃用”的意思:)

  • `[...]GLFW ...现在没有 GLEW(或 GLAD,作为替代方案)就不能做太多事情,因为你真正可以用它来绘制一些东西的是 OpenGl[...] 中的旧方法,这是误导性的。GLFW 的目的是管理 OpenGL 上下文以及窗口、键盘、事件处理的基础知识。它不会自动加载扩展,因此如果没有像glad这样的加载器,您只能使用系统自己提供的内容(也可能是当前版本)。但是您可以使用 GLFW 手动加载扩展/函数,因此您确实可以仅使用 GLFW 使用现代 OpenGL。 (2认同)