Chapter 1. The GLAM library (libglam)

Table of Contents

GLAM History
GLAM Designers and Programmers


The GLAM toolkit is an OpenGL-based cross platform user interface toolkit for creating 2D or 3D user interfaces. Its main purpose is to provide the underlying framework for a user interface, leaving the application specific look, feel and behavior to the developer's discretion. GLAM is about user-interface form following function. In other words, the look and feel of the user interface should follow the purpose it is trying to achieve.

The GLAM toolkit was developed to fill a need for a very extensible user-interface toolkit for OpenGL.

There are several user-interface toolkits available for OpenGL at the moment (2003). Among these are:

OpenGL user interface toolkits


An excellent 2D/3D hybrid UI toolkit that largely mimics the visual appearance and behavior of Windows 2000. Ideal for creating very portable 2D interface controls with 3D visualization "portholes" in OpenGL.


A more simplistic OpenGL UI toolkit that allows for 2D/3D hybrid interface controls. The widgets largely borrow their style from SGI's ?OpenWindows? interface. GLOW's main purpose is very similar to GLUI's except that it has not been updated since October 2000.

The main weakness in both toolkits is the lack of extensibility and the lack of 3D UI support. Each toolkit assumes that the user interface will only consist of 2D widgets and text. Regrettably, 3D user interfaces are rarely a 2D affair. It is quite often that 3D input is required to select an object in 3 space. Visualization at it's core is about the visualization, not the user interface. A user interface should meld itself around the data that is being visualized, form should follow function.

It is very important that developers realize that GLAM is a meta-toolkit. It does not define a final look and feel for the interface, rather it provides a framework for a very flexible UI. It is up to the developer to specify a component's graphical qualities as well as what animation occurs on a keyboard event, or mouse-over.