OpenGL 各类库的解析 gl/glu/glut/freeglut/glfw/glew

看了网上很多资料,讲的都不是很全,正好在学这一块,好好地总结一下吧

注:在windows中,对这些库的大小写是不作要求的

gl.h

gl库是核心库,gl中包含了最基本的3D函数,可以再本地电脑中的: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl 路径下找到gl.h头文件,打开后可以看到其中定义的上百个相关函数。

glu.h

glu是实用库,包含有43个函数,函数名的前缀为glu。glu 为了减轻繁重的编程工作,glu对gl中的函数进行部分封装,glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。如果算术好,在不使用glu库的情况下,使用gl库可以实现同样的效果。

glut.h

gult:OpenGL工具库 OpenGL Utility Toolkit。 glut是基本的窗口界面,是独立于gl和glu的,如果不喜欢用glut可使用MFC和Win32窗口等代替。但是glut是跨平台的,这就保证了我们编出的程序具有跨平台性,而使用MFC或Win32只能在windows操作系统上使用。主要包括窗口操作函数,窗口初始化、窗口大小、窗口位置等函数;回调函数:响应刷新消息、键盘消息、鼠标消息等等。 这个头文件自动包含了gl.h和glu.h,编程时不必再次包含它们。

freeglut.h

各种教程和书里常见的是闭源的GLUT。但由于GLUT的作者已经很久没更新过了(最后更新于2000年!= =),所以其他人另外做了一个接口兼容GLUT的freeglut,开源而且一直在维护中。可以理解为glut的替代库。

glew

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

glfw.h

GLFW无愧于其号称的lightweight的OpenGL框架,一个头文件,很少量的API,就完成了任务。GLFW的开发目的是用于替代glut的,从代码和功能上来看,我想它已经完全的完成了任务。它是一个轻量级的,开源的,跨平台的library。支持OpenGL及OpenGL ES,用来管理窗口,读取输入,处理事件等。因为OpenGL没有窗口管理的功能,所以很多热心的人写了工具来支持这些功能,比如早期的glut,现在的freeglut等。那么GLFW有何优势呢?glut太老了,最后一个版本还是90年代的。freeglut完全兼容glut,算是glut的代替品,功能齐全,但是bug太多。稳定性也不好(不是我说的啊),GLFW应运而生。并且glfw也是跨平台的~!

你可能感兴趣的:(【三维建模仿真】,三维建模与渲染技术)