OpenGL2.0及以上版本中glm,glut,glew,glfw,mesa等部件的关系

OpenGL2.0及以上版本中gl,glut,glew,glfw,mesa等部件的关系

一、OpenGL

OpenGL函数库相关的API有核心库(gl),实用库(glu),辅助库(aux)、实用工具库(glut),窗口库(glx、agl、wgl)和扩展函数库等。

gl是核心,glu是对gl的部分封装。glx、agl、wgl 是针对不同窗口系统的函数。glut是为跨平台的OpenGL程序的工具包,比aux功能强大(aux很大程度上已经被glut库取代。)。扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数。

OpenGL的竞争对手是Direct3D;OpenGL对应的开源实现是mesa 3D。

二、GLUT

GLUT是OpenGL工具库 OpenGL Utility Toolkit的缩写。

这部分函数以glut开头,主要包括窗口操作函数,窗口初始化、窗口大小、窗口位置等函数;回调函数:响应刷新消息、键盘消息、鼠标消息、定时器函数等;创建复杂的三维物体;菜单函数;程序运行函数。

gult对应的开源实现是freegult。

三、窗口库GLX

对于X窗口系统,它所使用的的OpenGL扩展(GLX:OpenGL extension for X.)是作为OpenGL的一个附件提供的,所有的GLX函数都使用前缀glX。

apl、wgl分别用于apple、windows。

四、GLEW

GLUT或者FREEGLUT主要是1.0的基本函数功能;GLEW是使用OPENGL2.0之后的一个工具函数。

不同的显卡公司,也会发布一些只有自家显卡才支 持的扩展函数,你要想用这数涵数,不得不去寻找最新的glext.h,有了GLEW扩展库,你就再也不用为找不到函数的接口而烦恼,因为GLEW能自动识别你的平台所支持的全部OpenGL高级扩展函数。也就是说,只要包含一个glew.h头文件,你就能使用gl,glu,glext,wgl,glx的全部函数。

The OpenGL Extension Wrangler (GLEW)是用来访问OpenGL 3.2 API函数的。不幸的是你不能简单的使用#include <GL/gl.h>来访问OpenGL接口,除非你想用旧版本的OpenGL。在现代OpenGL中,API函数是在运行时(run time)确定的,而非编译期(compile time)。GLEW可以在运行时加载OpenGL API。

五、GLFW

GLFW无愧于其号称的lightweight的OpenGL框架,的确是除了跨平台必要做的事情都没有做,所以一个头文件,很少量的API,就完成了任务。GLFW的开发目的是用于替代glut的,从代码和功能上来看,我想它已经完全的完成了任务。

一个轻量级的,开源的,跨平台的library。支持OpenGL及OpenGL ES,用来管理窗口,读取输入,处理事件等。因为OpenGL没有窗口管理的功能,所以很多热心的人写了工具来支持这些功能,比如早期的glut,现在的freeglut等。那么GLFW有何优势呢?glut太老了,最后一个版本还是90年代的。freeglut完全兼容glut,算是glut的代替品,功能齐全,但是bug太多。稳定性也不好(不是我说的啊),GLFW应运而生。

GLFW允许我们跨平台创建窗口,接受鼠标键盘消息。OpenGL不处理这些窗口创建和输入,所以就需要我们自己动手。我选择GLFW是因为它很小,并且容易理解。

六、GLM

OpenGL Mathematics (GLM)是一个数学库,用来处理矢量和矩阵等几乎其它所有东西。旧版本OpenGL提供了类似glRotateglTranslateglScale等函数,在现代OpenGL中,这些函数已经不存在了,我们需要自己处理所有的数学运算。GLM能在后续教程里提供很多矢量和矩阵运算上帮助。

七、层次关系


aux->glut->freeglut->glfw

glew

glu 

-------------------------------------------
opengl1.0 glx/apl/wgl 

opengl2.0及以上

参考文献:现代OpenGL教程 01

--------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------第二篇参考文献-----------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------------------------------

GLEW是一个跨平台的C++扩展库,基于OpenGL图形接口。使用OpenGL的朋友都知道,window目前只支持OpenGL1.1的涵数,但 OpenGL现在都发展到2.0以上了,要使用这些OpenGL的高级特性,就必须下载最新的扩展,另外,不同的显卡公司,也会发布一些只有自家显卡才支 持的扩展函数,你要想用这数涵数,不得不去寻找最新的glext.h,有了GLEW扩展库,你就再也不用为找不到函数的接口而烦恼,因为GLEW能自动识 别你的平台所支持的全部OpenGL高级扩展涵数。也就是说,只要包含一个glew.h头文件,你就能使用gl,glu,glext,wgl,glx的全 部函数。GLEW支持目前流行的各种操作系统(including Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris)。


项目主页: http://glew.sourceforge.net/ 
文档地址: http://glew.sourceforge.net/install.html 
下载地址: https://sourceforge.net/project/downloading.php?group_id=67586&filename=glew-1.5.1-src.zip

 

glu是实用库,包含有43个函数,函数名的前缀为glu。Glu 为了减轻繁重的编程工作,封装了OpenGL函数,Glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。
glaux是OpenGL辅助库,包含有31个函数,函数名前缀为aux。这部分函数提供窗口管理、输入输出处理以及绘制一些简单三维物体。
glut是实用工具库,基本上是用于做窗口界面的,并且是跨平台(所以有时你喜欢做简单的demo的话,可以光用glut就ok了)

 

GLX:OpenGL extension for X.

对于X窗口系统,它所使用的的OpenGL扩展(GLX)是作为OpenGL的一个附件提供的,所有的GLX函数都使用前缀glX。

 

 

常见的OpenGL头文件如下:(Windows系统中可以忽略大小写的区别,我自己也没太注意大小写。同时,文件的路径可能变化,例如不是<GL/gl.h>而是"gl.h",具体情况要看你到底把头文件放到哪了)

<GL/gl.h>:OpenGL所使用的函数和常量声明。

<GL/glu.h>:GLU(OpenGL实用库)所使用的函数和常量声明。GLU库属于OpenGL标准的一部分。(以下各种库则不属于)

<GL/glaux.h>:GLAUX(OpenGL辅助库)所使用的函数和常量声明。这个库提供了创建窗口,处理键盘和鼠标事件,设置调色板等OpenGL本身不提供,但在编写OpenGL程序时又经常用到的功能。目前这个库已经过时,只有比较少的编译环境中有提供,例如VC系列。在VC系列编译器中,使用这个头文件之前必须使用#include <windows.h>或者具有类似功能的头文件。

<GL/glut.h>:GLUT(OpenGL实用工具包)所使用的函数和常量声明。这个库的功能大致与GLAUX类似,目前许多OpenGL教程使用这个库来编写演示程序。一些编译系统可能不直接提供这个库(例如VC系列),需要单独下载安装。这个头文件自动包含了<GL/gl.h>和<GL/glu.h>,编程时不必再次包含它们。

<GL/glext.h>:扩展头文件。因为微软公司对OpenGL的支持不太积极,VC系列编译器虽然有<GL/gl.h>这个头文件,但是里面只有OpenGL 1.1版本中所规定的内容,而没有OpenGL 1.2及其以后版本。对当前的计算机配置而言,几乎都支持OpenGL 1.4版本,更高的则到1.5, 2.0, 2.1,而VC无法直接使用这些功能。为了解决这一问题,就有了<GL/glext.h>头文件。这个头文件提供了高版本OpenGL所需要的各种常数声明以及函数指针声明。

<GL/wglext.h>:扩展头文件。与<GL/glext.h>类似,但这个头文件中只提供适用于Windows系统的各种OpenGL扩展所使用的函数和常量,不适用于其它操作系统。

"glee.h":GLEE开源库的头文件。它的出现是因为<GL/glext.h>虽然可以使用高版本的OpenGL函数,但是使用的形式不太方便。GLEE库则让高版本的OpenGL函数与其它OpenGL函数在使用上同样方便。需要注意的是,这个头文件与<GL/gl.h>是冲突的,在包含"glee.h"之前,不应该包含<GL/gl.h>。
#include <GL/glut.h>
#include "glee.h"   // 错误,因为glut.h中含有gl.h,它与glee.h冲突
                    // 但是如果把两个include顺序交换,则正确
"glos.h":虽然这个也时常见到,但我也不知道它到底是什么,可能是与系统相关的各种功能,也可能只是自己编写的一个文件。我曾经看到一个glos.h头文件中只有一句#include <GL/glut.h>。

原文链接:glut glew区别

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在VS2019配置Assimp、GLFWGLMGLEW的步骤如下: 1. 首先,确保你已经下载并安装了VS2019版本。你可以在官方网站上下载并安装最新的VS2019。 2. 下载Assimp、GLFWGLMGLEW的libraries文件。你可以在它们的官方网站上下载到最新的版本。 3. 创建一个新的VS项目。在VS2019,点击"文件" -> "新建" -> "项目",选择一个合适的项目类型,例如空项目。 4. 设置项目的属性。在"项目资源管理器",右键点击项目的名称,选择"属性"。在属性窗口,选择"VC++目录",然后选择"包含目录"。点击右侧的编辑按钮,添加Assimp、GLFWGLMGLEW的include目录路径。 5. 还在"VC++目录"下,选择"库目录"。点击右侧的编辑按钮,添加Assimp、GLFWGLMGLEW的library目录路径。 6. 现在,转到"链接器" -> "输入",在"附加依赖项"添加Assimp、GLFWGLMGLEW的库文件名。 7. 点击"应用"和"确定"按钮保存更改。 8. 最后,将Assimp、GLFWGLMGLEW的 libraries文件复制到项目的根目录下,并在代码引入它们的头文件。例如: #include <assimp/Importer.hpp> #include <assimp/scene.h> #include <assimp/postprocess.h> #include <GLFW/glfw3.h> #include <glm/glm.hpp> #include <GL/glew.h> 现在,你就可以在VS2019配置和使用Assimp、GLFWGLMGLEW了。请确保按照正确的步骤配置,并且将libraries文件放置在正确的位置。如果出现任何问题,可以参考官方文档或寻求更多帮助。 ### 回答2: 在VS2019配置Assimp, GLFW, GLMGLEW需要按照以下步骤进行: 1. 下载Assimp,GLFWGLMGLEW的最新版本,并将它们解压至某个目录。 2. 在VS2019打开你的项目。 3. 在“解决方案资源管理器”,右键点击你的项目,然后选择“属性”。 4. 在弹出的窗口,点击“VC++目录”,然后选择“包含目录”一栏。 5. 点击“编辑”按钮。 6. 在“包含目录”一栏,添加Assimp、GLFWGLMGLEW的头文件所在目录,并分别点击“应用”和“确定”按钮。 7. 返回项目属性窗口,选择“库目录”一栏。 8. 点击“编辑”按钮。 9. 在“库目录”一栏,添加Assimp、GLFWGLMGLEW的库文件所在目录,并分别点击“应用”和“确定”按钮。 10. 在“链接器”一栏,选择“输入”一栏。 11. 点击“附加依赖项”,然后输入Assimp、GLFWGLMGLEW的库文件名,分别点击“应用”和“确定”按钮。 12. 现在,你的项目已经配置了Assimp、GLFWGLMGLEW。你可以在代码包含相应的头文件,并使用它们的功能了。 请注意,以上步骤仅适用于配置Assimp、GLFWGLMGLEW的基本设置。如果你的项目需要其他设置或配置,请参考相应的文档或教程。 ### 回答3: 在VS2019配置Assimp、GLFWGLMGLEW需要以下步骤: 1.首先,在官方网站上下载Assimp、GLFWGLMGLEW的库文件。确保下载与您的VS2019版本相匹配的库文件。 2.在VS2019创建一个新的项目,并将这些库文件添加到该项目。将所有库文件解压到一个统一的文件夹,例如"D:\libraries"。 3.打开VS2019,右键单击项目,选择"属性"选项。在左侧面板,选择"VC++目录"。然后,在右侧面板,选择"包含目录"并单击"编辑"按钮。 4.在弹出的编辑窗口,添加您下载的库文件的路径。例如,假设您将库文件解压到了"D:\libraries"文件夹,则在编辑窗口添加"D:\libraries\assimp\include","D:\libraries\glfw\include","D:\libraries\glm"和"D:\libraries\glew\include"。 5.接下来,返回属性窗口的左侧面板,选择"库目录"。然后,在右侧面板,单击"编辑"按钮。在弹出的编辑窗口,添加这些库文件的路径。例如,假设您将库文件解压到了"D:\libraries"文件夹,则在编辑窗口添加"D:\libraries\assimp\lib","D:\libraries\glfw\lib","D:\libraries\glm"和"D:\libraries\glew\lib"。 6.然后,在左侧面板选择"C/C++",就会显示一些额外的属性设置。在右侧面板,选择"附加包含目录"并单击"编辑"按钮。将库文件的路径添加到编辑窗口。 7.最后,在左侧面板选择"链接器",然后选择"附加库目录"。在右侧面板,单击"编辑"按钮,并将库文件的路径添加到编辑窗口。 完成上述步骤后,您就可以在VS2019使用Assimp、GLFWGLMGLEW库了。请注意,必须在源代码正确包含相关头文件,并将链接器设置为使用这些库文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值