Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.


Tree [d698a2] default bacon_added /

File Date Author Commit
bin 2004-04-12 trout trout [dd265a] Upgraded to Lua 5.0.2
docs 2002-08-27 trout trout [0b1913] More docs (selfdoc format).
src 2004-04-14 trout trout [d698a2] Sorted indenting and includes.
Doris.dsp 2004-04-14 trout trout [7d5a94] Cleaned up GLUI_String and removed awful AND, O...
Doris.dsw 2004-04-13 trout trout [4be9c5] Fixed MSVC GLUI make problems.
LICENSE.txt 2002-08-16 trout trout [9b05f7] GPL for Doris.
config 2002-08-16 trout trout [180d34] License notices and make docs.
dcvs 2003-08-09 trout trout [da4e11] Lua 5.0 libraries.
makefile 2004-02-25 trout trout [c62b13] Updated to Lua 5 & tolua++.
mksrctar 2002-08-27 trout trout [ea7adf] Stuff and ting.
readme.txt 2004-04-13 trout trout [f9c093] Added GLUI 2.2 to the project.

Read Me



Doris is a Lua script driven OpenGL plaything. It started out as an exercise
in binding Lua to something useful to learn about binding and see how useful 
Lua is. glLua already existed but I wanted to include a widget system for 
adding GUIs to OpenGL projects. I found GLUI which had all the functionality 
I required and is fully portable. The project uses slightly modified glLua 
bindings and some new bindings I created for GLUI and miscellaneous extra 
functionality in Doris. I've tried to keep maintenance and building of 
Doris simple. There are only two library dependencies to GLUT and GLUI. The 
Lua and toLua source is included for ease of building and in case 
modifications are required.

All code written by me is Copyright (c) 2001-2004 Nick Trout.
This project is released under the GNU Public License see
for more details. The file LICENSE.txt holds a copy of the GPL.

See for more
details on changes and latest files.

1.1 - Lua 5.0.2 & GLUI integration.
  * New Lua version 5.0.2 included (just bug fixes, no new features).
  * Better error reporting for syntax errors (_TRACEBACK).
  * GLUI 2.2 added to Doris project so tidying and improvements can
    be made to the library. GLUT is only external dependency now.

1.0 - Lua 5.0 and toLua++ 5.
  * Lua language upgraded to Lua 5.0.
  * toLua binding generator upgraded to toLua 5.0 alpha.
  * ...then upgraded to toLua++ 5.0 v1.2 as toLua discontinued.
  * Scripts (examples & wrappers) updated to Lua 5.0.
  * Breakout game added (but unfinished).

0.5 - Beta build. Untested on platforms besides Windows and Cygwin.
  * Updated to Lua 4.0.1.
  * Fixed make klean to delete all source for clean CVS get latest.
  * Image integrated with gllbuffer to provide texture support.
  * GL binding updated to include gllbuffer functionality.
  * Added idle, drag, move and key callbacks. See callback.lua example.
  * Listboxs can now handle item maps of any type (previously just numbers).
  * Added texture.lua & texgen.lua examples.
  * Added -f option to command line for extra args.
  * Added selfdoc documentation system. Current features are:
     - Preprocesses code and uses simple Lua format for commenting.
     - Generates content list and groups contents.
     - Simple tag formating @Tcode@t @Bbold@b @Iitalics@i
     - Parses parameters and makes list.
     - Current formatted output only in HTML.
     - Scans --! and //! comments so suitable for Lua, toLua and C/C++.
  * GNU license details added and copyright notices attached to files as 
  * Fixed a few of cygwin compile problems. eg. GLU defines and CFLAGS.
  * Render class renamed Quadric.

0.4 - Tidying up - previous releases were a bit scrappy.
  * Added image support. Currently only supports TGA, a nice simple format.
    Dont really want to add dependencies to image libraries.
  * Added makefiles for *nix. This was done with Cygwin under Windows, not
    tested under *nix system. Should be able to just "make all" from root.
  * Removed any C++ hangover code in Lua so gcc doesnt complain.
  * Few minor bug fixes.
  * Commented more of the code.
  * Credited authors for Lua!
  * More example scripts & enhanced existing scripts.
  * Title window text tag now "title".
  * _DEVELOP helper scripts called from Doris not script.
  * Scripts clear screen rather than Window.

0.3 - Adding functionality and fixing bugs.
  * Fixed matrix bugs and made API more friendly.
  * Added eg/hierarchy.lua example.

0.2 - First executable released - not all scripts work.
  * Moved over to GLUI 2.1 beta which fixes some bugs.
  * Please use GLUT 3.7.6 as 3.7.5 has freeze and exit bugs.

0.1 - Up and running.

Building Doris
You will need GLUT and GLUI. All of the code necessary for Lua and generating
the bindings is included in the source code here.

Please note: if you have earlier versions than these you may get problems with
newer video cards (ie. I had problems with pre GLUT 3.7.6 and GeForce3).

Latest code:

For Win32: v3.7.6 -
Cygwin: Use setup to get OpenGL support.
Doris should be made to use FreeGLUT at some point as GLUT is no longer
maintained. This may mean changes to GLUI.

GLUI has now been integrated into the Doris project. Development of GLUI seems
to have slowed and it would be nice to tidy some aspects of it up. These
changes will hopefully be integrated back into the original GLUI(s).
The Doris binding is compatible with GLUI 2.1 and 2.2. GLUI has been forked
at the following address (as of 12-Apr-04) :-
GLUI 2.2 -
The following is the original GLUI distribution:
GLUI 2.1 -
There is a copy of the one bound to Doris on the SF site. This is in case
a new version of GLUI is released, which may not be compatible with the
current binding.

<MSVC Notes>
There are dsw and dsp files for MSVC in the doris root.
Note on how I set things up as it may save you time?
To save hassle I subst drive w: to my work directory
eg. subst w: c:\work
Then all libraries go in w:\libs and all tools in w:\tools.
eg. w:\libs\glui and w:\tools\doris

There are makefiles for *nix and Cygwin. They have all been modified so that
you can just "make all" from the doris root directory.
You can also "make glui" if you set the correct paths in doris/config. There
is a makefile included at the end of this readme which works with cygwin - just
copy over the one in the GLUI source.

<Creating the bindings>
The tl.bat batch file (in doris/src) creates the toLua bindings. First you must
build dtolua. Run tl so see the options.
ie. the wrapper/helper scripts do not need to be included as they are included
in dorislibsbin.h
dorisgui.lua is a wrapper script for GLUI to make it easier to use.
render.lua is some miscellaneous helpers for OpenGL.

The bin directory zips up for distribution. It contains all docs and examples etc.

Hope Doris is of some use you have fun using it,

	Nick  (

You can contact me through SourceForge via

GLUI makefile
Note: This is a modified version of the makefile that comes with GLUI.
      This can be used to compile GLUI under Cygwin.


#Change the following two lines to reflect the locations
# of the GLUT library (.a) and includes on your system


#for sgi   -- comment out the lines below to use on HP
#CC=CC -g0 -o32
CC=gcc -O2
#CC=g++ -O3

libs =     ${GLLIBS}  -lXmu -lXext -lX11 -lXi -lm #-lmalloc

LIBGLUI= -Llib -lglui

All: lib/libglui.a
#bin/example1 bin/example2 bin/example3 bin/example4 bin/example5

GLUI_OBJS = glui_add_controls.o glui.o glui_bitmap_img_data.o glui_bitmaps.o \
    glui_button.o glui_edittext.o glui_checkbox.o glui_node.o glui_radio.o \
    glui_statictext.o glui_panel.o glui_separator.o glui_spinner.o \
    glui_control.o glui_column.o glui_translation.o glui_rotation.o \
    glui_mouse_iaction.o glui_listbox.o glui_rollout.o arcball.o algebra3.o \

lib/libglui.a: $(GLUI_OBJS)
	@echo "Creating library"
	ar -r lib/libglui.a $(GLUI_OBJS)

	$(CC) -c $(CFLAGS) $(CPPFLAGS) $(INCS) $*.cpp

	$(CC) -c $(CFLAGS) $(CPPFLAGS) $(INCS) $*.c
	/bin/rm *.o

algebra3.o: algebra3.h
arcball.o: arcball.h algebra3.h quaternion.h stdinc.h
example1.o: glui.h
example2.o:   glui.h
example3.o:   glui.h
example4.o:   glui.h
glui.o: glui.h  stdinc.h
glui_add_controls.o: glui.h  stdinc.h
glui_bitmap_img_data.o: glui_img_checkbox_0.c glui_img_checkbox_1.c
glui_bitmap_img_data.o: glui_img_radiobutton_0.c glui_img_radiobutton_1.c
glui_bitmap_img_data.o: glui_img_uparrow.c glui_img_downarrow.c
glui_bitmap_img_data.o: glui_img_leftarrow.c glui_img_rightarrow.c
glui_bitmap_img_data.o: glui_img_spinup_1.c glui_img_spinup_0.c
glui_bitmap_img_data.o: glui_img_spindown_1.c glui_img_spindown_0.c
glui_bitmap_img_data.o: glui_img_checkbox_0_dis.c glui_img_checkbox_1_dis.c
glui_bitmap_img_data.o: glui_img_radiobutton_0_dis.c
glui_bitmap_img_data.o: glui_img_radiobutton_1_dis.c glui_img_spinup_dis.c
glui_bitmap_img_data.o: glui_img_spindown_dis.c
glui_bitmaps.o: glui.h stdinc.h
glui_button.o: glui.h stdinc.h
glui_checkbox.o: glui.h stdinc.h
glui_column.o: glui.h stdinc.h
glui_control.o: glui.h stdinc.h
glui_edittext.o: glui.h stdinc.h
glui_node.o: glui.h stdinc.h
glui_panel.o: glui.h stdinc.h
glui_radio.o: glui.h stdinc.h
glui_separator.o: glui.h stdinc.h
glui_spinner.o: glui.h stdinc.h
glui_statictext.o: glui.h stdinc.h
quaternion.o: quaternion.h algebra3.h stdinc.h
glui_translation.o: glui.h stdinc.h
glui_rotation.o: glui.h stdinc.h
glui_mouse_iaction.o: glui.h stdinc.h
glui_listbox.o: glui.h stdinc.h
glui_rollout.o: glui.h stdinc.h