Skip to content
josch edited this page Sep 12, 2015 · 2 revisions

What is GLUI?

GLUI is a GLUT-based C++ user interface library which provides controls such as buttons, checkboxes, radio buttons, and spinners to OpenGL applications. It is window-system independent, relying on GLUT to handle all system-dependent issues, such as window and mouse management.

Features of the GLUI User Interface Library include:

  • Complete integration with GLUT toolkit
  • Simple creation of a new user interface window with a single line of code
  • Support for multiple user interface windows
  • Standard user interface controls such as:
    • Buttons
    • Checkboxes for boolean variables
    • Radio Buttons for mutually-exclusive options
    • Editable text boxes for inputting text, integers, and floating-point values
    • Spinners for interactively manipulating integer and floating-point values
    • Static text fields
    • Panels for grouping sets of controls
    • Separator lines to help visually organize groups of controls
  • Controls can generate callbacks when their values change
  • Variables can be linked to controls and automatically updated when the value of the control changes ("live variables")
  • Controls can be automatically synchronized to reflect changes in live variables
  • Controls can trigger GLUT redisplay events when their values change
  • Layout and sizing of controls is automatic
  • Controls can be grouped into columns
  • User can cycle through controls using Tab key

What does GLUI look like?

Here's an example GLUI window, showing the different controls. This window is rendered entirely in OpenGL. It therefore looks the same on PCs, Macs, SGIs, and other Unixes, using either SGI's implementation of OpenGL, Microsoft's, or Mesa's.

New in Version 2

GLUI version 2 includes the following new features and controls:

  • GLUI controls within the main graphics window.
  • Functions for cleanly destroying GLUI windows and subwindows.
  • Functions for hiding and showing GLUI windows and subwindows.
  • A sync_live_all() for automatically synchronizing all live variables in all GLUI windows simultaneously.
  • Rollouts - collapsible panels for reducing screen clutter.
  • Listboxes - allows the user to choose an item from a list of strings.
  • Rotation and translation controllers - for easily receiving 3D interaction input from the user.

Here is a screenshot (from Windows) showing all the GLUI version 2.0 controls:

And another screenshot (from X-Windows/Mwm), showing the new features, including GLUI subwindows docked inside the main graphics window.

This screenshot (from Windows) shows the new widgets in GLUI 2.3, including scrollbars, a list widget, an area text widget, and a simple file browser.

License Information

GLUI is copyright Paul Rademacher, Nigel Stewart and Bill Baxter.

It is released under the ZLIB license.

Projects Using GLUI

  • Doris - a script driven OpenGL viewer using Lua.
  • 3dtk - a 3D pointcloud toolkit

Wish List

  • Convert documentation to LaTeX
  • Doxygen documentation
  • Feature request: Floating controls over a 3D canvas

Links