Things to look at:
This is the main page for glGUI. It is a cross-platform user interface currently implemented in OpenGL. See the Sourceforge project page to get the latest release.
Projects that use glGUI
Please let me know if you have a project using glGUI that you would like to have listed here.
screenshots of glut sample (release 9a windows & linux)
(variable width fonts and various bug fixes)
readme.txt from the latest glGUI release
glGUI release 9a
29 September, 2003
Scott Franke [druid-]
updated 29 September 2003 (rel 9a)
+ Variable width font support
+ Arrow and delete keys through glut to editable text box
The purpose of glGUI is to create a set of classes for a general purpose GUI,
without platform or API restrictions for use in games and other applications
that require only basic GUI functionality. glGUI is not meant to be a
replacement for a full windowed GUI and as such does not include that level of
notes on the sample:
The class documentation (generated by Doxygen) is included in the html director
(index.html). Beyond that, there is currently no documentation to help you use
glGUI. Sorry. When the code is more mature (or sooner if someone wants to
volunteer), a detailed technical document on the classes will be written and
While we appreciate bug reports and suggestions, please check the issues list at
the bottom before contacting the developers. I would prefer any contact go
through the glgui-users mailing list or one of the public forums on sourceforge
(both links below). But if you have something that for some reason needs to be
private, contact the project admin (address at the top).
brief info links:
Users mailing list:
Developers mailing list:
my dev notes:
[feel free to contact me (through the dev list) regarding any of these]
[Current TODO list:]
*** coordsys->range doesn't affect rendering
tooltipframe should be a frameid
support for non-vertical listboxes
no negative resizing
close submenu if not selected (frame::select() & deselect())?
MessageBox - pops up to front, etc
Warning and error logging - ui has a console?
how are they defined, activated, etc?
what place in XML file? resource?
change to use gl like get/set function naming scheme *f *fv, etc
Move all enable/disable to go through ui->activate or whatever
applicable flags to each CUI_Frame::... element
listbox & menus & tool tips
reposition to fit in the parent frame
[add to XML schema:]
[Features to add:]
double click, right click
?slider w/ scroll buttons
?resolution dependence support - flag to use x/y pixel size as coordinate
?console cvar read/write protection
click and drag cursor/selection
adding/removing items in an open box will screw up its size
save. Will take some work to have it not generate excessively large XML
files. take it out?
detect recursion in aliases - or not allow an alias to call another alias?
[Concerns, issues (should these be added?):]
centralized error handling
language support (unicode)
nochildren flag (for non-frames)
updated 09 June (rel 9)
Various changes over the last few years, mostly for:
+ glut sample - currently compiling on win32 and linux
updated 18 August (rel 8)
The file /glGUI/UI/CUI_Resource.h is not in CVS at the time of this release. It
got added with the wrong case and I haven't been able to get this fixed yet
(shouldn't be much longer). Be sure to get the release zip which contains this
file if you want to build the project.
+ XercesSAX project that builds a smaller version of the xerces parser (no DOM
code). Converted all the other projects to use this new one.
+ CUI_Resource class for the resources to inherit from. It keeps track of
memory management issues, which were also improved in CUI_Registry.
+ Applicable flags are listed in the internal class documentation.
+ Selection and deselection of list-type objects is more correct.
+ Coordinate systems now correctly affect both rendering and hit detection.
+ file loading moved into CUI_UI's LoadUI method.
+ CUI_ErrorHandler can log to files, the console and eventually will pop-up
updated 28 July (rel 7)
File loading using the Xerces XML parser from Apache (see legal info at the
bottom of this text file). The only documentation that exists for the file
format is the XML Schema in the filedocs/ directory. There is a sample XML
file in the media/ directory and the SampleXML project (in bin/) loads this and
displays it with just a little extra code for setting up shaders and handling a
A more functional (and attractive) sample will come later on.
If the xerces parser becomes too much of a burden (as far as maintaining
cross-platform capability), we'll find another way to do it.
Please feel free to play around with this and report any bugs to the bug tracker
on sourceforge (http://sourceforge.net/bugs/?group_id=3899) or to the glgui-dev
mailing list (email@example.com). I haven't tested file loading
too much, so there are probably many bugs to be found.
updated 19 July (rel 6)
Added a few new controls, fixed some bugs, and made lots and lots of
improvements and changes in general. The XML schema online is out of date.
Check the sourceforge project page for news when I update it.
+ toggle items in ListBox and Menu.
+ tooltips on any frame
+ progress bar has an option to display "value/max" after text
+ listitems create their own frames, so custom list views are now possible
+ scrollable frame - on demand scrollbars
+ resize button - resize any dimension of parent frame by dragging this button.
Also can be used to move the parent frame.
+ text field - single line, message to callback when the user hits enter or as
it is being edited (option)
+ console - with variables and functions (still needs command history, command
completion, and alias functionality)
updated 7 July (rel 5)
A few new controls and a lot of bug fixes and misc code improvements. The
first revision of the file format spec is online at glgui.sourceforge.net. I'm
using XML as it is straightforward and easy to use even before a resource
editor is ready.
+ radio button group
+ scrollable text box
(I moved old updates to the bottom of this file)
updated 29 June (rel 4)
Controls are higher level GUI components - they automatically generate other
frames as their children and handle communication between them to increase
+ a few more slight improvements to callback
+ draggable frame views
+ draggable frames
+ listbox (control)
+ menu (control)
updated 23 June (rel 3)
The project was converted to be a dynamic library. It is currently buildable
as a dll in win32. The sample application uses the dll and inherits a few
classes to create platform functionality (opengl and a simple shader).
+ better selection
+ better keyboard handling
+ better button callbacks (shared at a root frame level) with button IDs
[I updated the todo list, etc below]
updated 19 Jun
Because of existing project name conflictions, this project will keep the name
'glGUI'. Sorry for any confusion.
This project is released under the zip/libpng license.
Copyright (c) 2000 Scott Franke
This software is provided 'as-is', without any express or implied warranty. In
no event will the authors be held liable for any damages arising from the use
of this software.
Permission is granted to anyone to use this software for any purpose, including
commercial applications, and to alter it and redistribute it freely, subject to
the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim
that you wrote the original software. If you use this software in a product, an
acknowledgment in the product documentation would be appreciated but is not
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Xerces XML Parser (xml.apache.org)
This product includes software developed by the
Apache Software Foundation (http://www.apache.org/).
* The Apache Software License, Version 1.1
* Copyright (c) 1999-2000 The Apache Software Foundation. All rights
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
* 4. The names "Xerces" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact firstname.lastname@example.org.
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation and was
* originally based on software copyright (c) 1999, International
* Business Machines, Inc., http://www.ibm.com. For more
* information on the Apache Software Foundation, please see