c++ - 什么是 Glew、Glut 和 glfw3?哪些在 Opengl 3/4 中已弃用
问题描述
我一直在网上阅读有关 OpenGL 3 和 4 如何与以前的版本有很大不同的信息。
一些教程要求:
#include <GL/glew.h>
其他人将拥有:
#include <GLUT/glut.h>
什么是Glew
和Glut
?glfw3
哪些已弃用,哪些已在现代 opengl 中使用?
解决方案
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。所以,我想这就是你所说的“弃用”:)
推荐阅读
- c - 在 c 中,system() 在 printf() 之前执行,即使 printf 先出现
- sqlite - 使用 SQLiteStudio 更新查询以将零附加到 blob 字段中
- laravel - 在 Laravel Blade 视图中传递自定义事件
- amazon-web-services - 如何使用蓝/绿部署在代码管道中获取构建的 docker 映像到部署步骤
- angular - 角材料输入 | 如何使“焦点”布局默认
- java - 禁用 SSL 检查安装文件操作
- node.js - 如何在nodejs中使用OR运算符
- c# - 我应该如何处理 API 数据请求者的异常?
- php - Mac OS:未加载国际扩展
- php - makePartial() 返回 Mockery\Exception\BadMethodCallException :此模拟对象上不存在方法