
Q-OPENGL
========

An OpenGL module for the Q programming language. Copyright (c) 2004-2006 by
Albert Graef and Jonas Joebges, Johannes Gutenberg University Mainz,
Germany. Distributed under the GNU General Public License (GPL) Version 2 or
later (see the accompanying COPYING file for details).

Please refer to the INSTALL file for installation instructions. You need Q 7.0
or later to compile this package.

This is an (almost) complete SWIG-generated wrapper of the GL, GLU and GLUT
libraries, which allows you to do 3D graphics programming in Q. The Q
programming system can be found at http://q-lang.sourceforge.net. For more
information about OpenGL please visit http://www.opengl.org.

For the most part, this module is just a straightforward wrapper of the OpenGL
routines. Thus most functions work just like their C counterparts, and you
should refer to the OpenGL documentation to find out how to use them. Some
additional helper functions (glIntVector etc.) are provided so that you can
create the integer or floating point vectors required as arguments for some of
the routines. Moreover, GLUT callbacks are fully wrapped in Q, i.e., you can
implement all of the GLUT callbacks (glutDisplayFunc, glutReshapeFunc, etc.) 
as Q functions; the accompanying example Q scripts show how to do this.

Please note that this module is still work in progress. The current release
was developed using SuSE Linux with the MESA 6.8 libraries and Freeglut 2.2
which are (backward-)compatible with OpenGL 1.3 and GLUT 3.7, respectively.
The module has also been ported to Windows using MinGW3.

Not all functions of the OpenGL interface have been tested yet, and some of
the more advanced GL/GLU functions are not fully supported in the current
release; these restrictions will hopefully be lifted in the future. In
particular, please note the following:

- There is no way to create the `void**' pointers required as an argument
  to the glMultiDrawElements function, thus this routine is not usable right
  now (OpenGL >= 1.4).

- The GLU callbacks for tesselation, quadrics and NURBS (see Chapter 11 and
  12 of the "RedBook") have not been wrapped yet. If you need these, you will
  have to wrap the corresponding C code yourself.

- OpenGL 2.0 has not been tested, so the 2.0-specific extensions probably
  need some work.

Please send bug reports, patches, comments and suggestions to:
ag@muwiinfa.geschichte.uni-mainz.de.


Enjoy!
June 2005
Albert Graef
