Support Libraries for OpenGL Games Programming
Sections
OpenGL itself is a set of function bindings for a given language (C, FORTRAN etc) which supply rendering functionality. An additional library should be provided by the vendor of a windowing system which supports OpenGL to allow you to create and destroy OpenGL contexts and perform other operations the nature of which is tied to the underlying OS. Available libraries of this type include wgl (for Windows), glX (for X Windows on Unix / Linux systems) and agl (for Apple Macs). Targets without a windowing system should provide equivalent functionality, as is the case for e.g. hardware accelerated Mesa for DOS.
glu is a toolkit of support routines for evaluating curved surfaces, setting up perspective projection matrices etc, which should be available as part of any OpenGL implementation. Like OpenGL itself, its specification is periodically upgraded, although in general there should only be one version of glu for a given platform at any one time (glu does not have to be written specifically for the hardware that is present) and there are no glu extensions. As of December 1999 there is no generally available glu for the Win9X drivers for the 3dfx Voodoo 1, 2 and Rush; a working version is, however, available from the downloads section of this site.
GLUT is a cross platform "helper library", written by Mark Kilgard, which provides code to deal with the bindings for a specific window system (e.g. agl, glX, wgl) for you. The source code is available, but the license does not allow you to distribute modified versions of the source. In my personal opinion GLUT is useful for samples and game prototyping, but has too many restrictions to make a good basis for a professional game; e.g. on Windows 9X, you can only use the "standalone" drivers for Voodoo 1, 2 and Rush with GLUT by building two executables, one of which is statically linked to a library file corresponding to the standalone driver (such a library can be found in the downloads section). Versions of GLUT exist for the Mac, Windows and Linux, as well as other "non game" OpenGL targets, and are generally either available through the link above, included in the OpenGL SDK for the target, or downloadable from the Mesa site.
As of January 2000 there is also a freeglut project from Pawel Olszta, which has been placed under an X Consortium license, so that modified versions of the source code can be freely distributed. Given the terms of the license, it should be possible to port freeglut to a console with NDA'ed APIs and not distribute the NDA'ed portions of the freeglut source (as is also possible for the original GLUT code). freeglut is essentially intended to be initially a clone of GLUT with a more open license, to which extra functionality not found in GLUT can be added as required.
aux is another cross platform helper library, similar to GLUT. It has less functionality than GLUT, and is essentially obsolete, though some sample code still uses it. Source for an aux implementation can be found in some versions of Mesa.
MGL is Scitech's open source 3d engine for games, available under a Mozilla like license. While it is not formally connected to OpenGL, it is tightly integrated with several implementations, especially with Mesa based drivers, and the window system specific code in it has been used as an alternative to GLUT.