freeglut和glew有什么区别?

53

我最近开始学习OpenGL(大于3.3版本),我注意到很多例子和教程都同时使用freeglut和glew,但并没有真正解释它们之间的区别。在谷歌和阅读无数文章之后,我找到的最好的描述是这个OpenGL相关工具箱和API,但我觉得还是不够清晰。我甚至读了SO上的标签信息。

作为一个OpenGL的新手,我仍然试图理解不同的概念。我已经创建了一个基本程序,使用glew创建上下文(在windows,VS2010),绘制非常基本的形状,所有这些都不需要显式地包含freeglut。所以我不明白为什么我需要它。

那么我的问题是,以下各项有何区别:
-freeglut
-glew
-(& glfw)
它们中的一个能做什么,而其他几个不能呢?


5
就像我之前所说的那样,所有我阅读过的例子、教程等都没有很清楚地向初学者解释它们实际上是做什么的,这就是我的困惑所在。所有的例子都使用函数等,但没有明确说明一个函数可以做什么而另一个不能做什么。 - ReturnVoid
2个回答

69

OpenGL扩展包装器(GLEW)用于访问现代OpenGL API函数(版本3.2到最新版本)。如果使用古老的OpenGL版本,则可以简单地将OpenGL函数包含在#include <GL/gl.h>中。但在现代OpenGL中,API函数在运行时而不是编译时确定。GLEW将处理OpenGL API的运行时加载。关于GLEW,请参见此处

GLFWfreeglut可让我们以跨平台方式创建窗口并接收鼠标和键盘输入。OpenGL不处理窗口创建或输入,因此我们必须使用这些库来处理窗口、键盘、鼠标、操纵杆、输入和其他目的。

GLFWfreeglut是我们可以根据需要选择的替代方案,但GLEW与它们不同,它用于OpenGL API的运行时加载。


3
我在大学的一些工作中同时使用它们两个。 GLEW是一个“跨平台开源C/C++扩展加载库”(来自其网站),而freeglut是一个窗口管理器,可以替代默认的OpenGL实用工具包(GLUT)库。
所以,正如你所看到的,它们两个有不同的目的。使用freeglut的重点在于它仍然得到维护,而默认的GLUT没有得到维护,因此如果您想要修复错误并获得新功能,则应该使用它 :)

基本上,一个人可以决定单独使用freeglut?或者glew?没有其中任何一个。因此,这两个都具有彼此所需的所有功能,为什么要同时包含它们?再次说明,我不明白。如果听起来很蠢,请原谅,但我不明白,而且我看到的所有示例都包括两者或某些类似变体,这并没有帮助。 - ReturnVoid
等一下,那么GLEW是C/C++特定的吗?而Glut/freeglut不是吗?这是否意味着运行C#、.net或其他非C/C++语言的人不能使用GLEW,他们必须使用glut或其他东西? - ReturnVoid
1
你不必使用GLEW,因为它是一个版本管理器(确保你的操作系统有适当的版本),但它很有帮助。如果你想使用默认的GLUT,也可以删除freeglut,但那样你将使用旧软件,因为它似乎已被放弃... - mrcasals
据我所知,GLUT默认与OpenGL库一起提供,并且它是一个窗口管理器。Freeglut是GLUT的替代品,它们都可以做同样的事情,但GLUT似乎已经被放弃了,而freeglut仍在开发中(我想)。对于GLEW,是的,它只适用于C/C++。如果您想在C#中使用它,您将不得不使用其他东西。希望这可以帮助您! - mrcasals

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接