更新时间:2022-08-25 16:56
GLUT代表OpenGL应用工具包,英文全称为OpenGL Utility Toolkit,是一个和窗口系统无关的软件包,它由Mark Kilgard在SGI时写的。作为AUX库的功能更强大的替代品,用于隐藏不同窗口系统API的复杂性。
GLUT是专为构建中小型OpenGL程序。虽然GLUT是适合学习OpenGL和开发简单的OpenGL应用程序。GLUT并不是一个功能全面的工具包所以大型应用程序需要复杂的用户界面最好使用本机窗口系统工具包。所以GLUT是简单的、容易的、小的。
GLUT中有C,C + +(C一样),FORTRAN和Ada编程绑定。GLUT的源代码分布是移植到几乎所有的OpenGL实现和平台。目前最新版本为3.7 。
GLUT包括了以下常见的功能:
定义以及控制视窗侦测并处理键盘及鼠标的事件以一个函数呼叫绘制某些常用的立体图形,例如长方体、球、以及犹他茶壶(实心或只有骨架,如glutWireTeapot())提供了简单选单列的实现
GLUT是由Mark J. Kilgard在Silicon Graphics工作时所写,此人同时也是OpenGL Programming for the X Window System以及The Cg Tutorial: The Definitive Guide to Programmable Real-Time Graphics两书的作者。
GLUT的两个主要目的是建立一个跨平台的函式库(事实上GLUT就是跨平台的),以及简化学习OpenGL的条件。透过GLUT编写OpenGL通常只需要增加几行额外GLUT的程式码,而且不需要知道每个不同操作系统处理视窗的API。
所有的GLUT函数都以glut作为开头,例如glutPostRedisplay()。
最早的GLUT函式库是由Mark Kilgard所提供的GLX,能够支援X Window System,随后被Nate Robins移植到了Microsoft Windows上(WGL)。除此之外,Mac OS X亦提供了一个NSGL/CGL的界面支援了其自身产品的架构。
由于Kilgard's的GLUT函式库已经不再被维护,且其授权亦不允许对其函式库的再发布或是做出改版。程序员开始意识到必须重新制作一个开放源代码的应用程序界面。于是第一个开源的OpenGL API:freeglut,以尽可能地保留原本界面的方式实现,并添加一些新的函数以解决原始版本的使用限制。例如OpenGLUT,freeglut的其中一个分支,相较于原版本增加了一些新的功能,但在2005年5月已停止其开发。
原始版本的GLUT让程序员难以实现某些功能,于是出现了许多非官方的扩充[1],而在某些版本的API的实现方式中也都或多或少解决了这些问题。
以下列出数种原版GLUT中常见的问题以及解决方法:
由于原始版本的GLUT已经被开放源代码的freeglut所取代,所以以上的问题在最原始版本的GLUT一直没有被解决。