初学OpenGL的时候,在cpp源文件中经常需要引用到gl.h、glu.h、gltools.h等各种头文件,其实也不知道每个头文件都是干啥用的,通过网上资源了解了下,现在来总结下:
1、gl.h
按照约定,所有的OpenGL函数、类型和宏的原型都包含在头文件gl.h中。
2、glu.h (OpenGL Utility library):
OpenGL 工具函数库,主要定义OpenGL中的一些工具函数
3、glut.h(OpenGL Utility Toolkit):OpenGL实用工具库。
这个库的出现是取代了AUX(OpenGL辅助函数库)。AUX的作用是帮助人们学习和编写OpenGL程序,而不必为任何平台特定的细节而分身。缺点是缺乏对GUI(graphic user interface,图形用户接口)功能的支持,所以,限制了使用这个函数库创建实用的应用程序。so,有了GLUT。在绝大数的Unix(包括Linux)系统中都对GLUT函数库进行了支持,并且在Max OS X系统中,对GLUT进行了本地支持,Apple对这个函数库进行了维护和扩展。但是在Windows系统中,GLUT的开发已经中断。一种新的GLUT实现freeglut已经崛起并取代了GLUT的位置。
如果只是在Windows平台下开发OpenGL应用程序,而不考虑代码移植的问题,则可以完全使用freeglut取代GLUT;但是如果开发的OpenGL应用程序需要进行跨平台移植的话,使用GLUT可能会更方便。
4、gltools.h
负责所有平台特定的变型。下面是该文件中的部分内容。
// Windows
#ifdef WIN32
#include <windows.h> // Must have for Windows platform builds
#include "glee.h" // OpenGL Extension "autoloader"
#include <gl\gl.h> // Microsoft OpenGL headers (version 1.1 by themselves)
#include <gl\glu.h> // OpenGL Utilities
#include "glut.h" // Glut (Free-Glut on Windows)
#endif
glee.h 表示OpenGL Easy Extension库。这个库在项目中透明地添加了OpenGL扩展。基本的Microsoft头文件只包含了OpenGL1.1的功能,GLEE在项目中添加了其他的API。
到这里,相信大家对这几个库之间的相互包含关系,以及每个库的作用有了大概的了解。