Using Mesa

Basic Instructions

Mesa, the free software-only almost-implementation of the OpenGL API, is installed on all the CS department public Unix workstations. Since Mesa is sofware-only, it runs on all publix Unix workstations, regardless of the presence or absence of a 3D graphics card on the host machine.

For each project, you will be given a Makefile and a set of program files. A Makefile is a kind of script which knows how to compile and link a program including several input files and using various libraries. This Makefile can compile the program files on all the different kinds of Unix machines here at UT (which require different libraries).

To run the Makefile, it should be in the same directory as the source files. Then type make BOX=dell (if you're on one of the new Dells) or /lusr/gnu/bin/make BOX=sun (on the Suns in the Taylor basement - unfortunately the default make on the SUNs uses a different format for the Makefile).

Before running the program on Suns and Intels, you need to tell the operating system (specifically, your shell) about where to look for dynamic libraries at run time. You do this by making your LD_LIBRARY_PATH environment variable contains the paths /p/lib/Mesa and /usr/openwin/lib. If you are using the csh or tcsh, you can set this variable by issuing the command

Using csh or tsh, issue the command setenv LD_LIBRARY_PATH /p/lib/Mesa:/usr/openwin/lib , either at the terminal or in your .login file.

Using sh, bash, or ksh, issue the command export LD_LIBRARY_PATH=/p/lib/Mesa:/usr/openwin/lib, either at your terminal or in your .profile file.

More Information

Mesa is a collection of graphics libraries, the MesaGL library and the MesaGLU library. These are embodied in the files libMesaGL.a and libMesaGLU.a . There is also the GLUT user interface toolkit from SGI embodied in the library file libglut.a . In addition to these static libraries, there are dynamically loadable libraries available for all the machines. On the Suns and Intel machines, these libraries are identified by a .so extension.

The libraries are installed in /p/lib/Mesa. There is also a set of common include files to be used with these libraries in /p/include/Mesa. Documentation for the libraries is to be found in /p/doc/Mesa, which has three subdirectories of interest, mangl, manglu, and doc. The first two contain man pages for MesaGL and MesaGLU, and doc contains papers describing these libraries at a higher level. All of these documents are in postscript format, which means that the man program cannot be used to read the man pages. Instead, I recommend using the command `gv --' to read these postscript files.

There is also an extensive set of demo programs available for you to look at and play with. The source code for these can be found in /p/src/Mesa-2.1/demos, /p/src/Mesa-2.1/book, /p/src/Mesa-2.1/samples and /p/src/Mesa-2.1/glut-3.2/progs . The executables for these programs can be found in appropriate subdirectories of /p/bin/Mesa . They all use shared libraries.

To try one of these demos, copy the source code to your own account and build it using this Makefile . DO NOT attempt to use the makefiles in the /p/src/Mesa directory tree; they won't work with the installed libraries and include files. To use our local Makefile, you type make machinetype PROG=programnam . If you have trouble with the Makefile, you should verify that the process of downloading it or copying it didn't convert the initial tab characters in each indented line into spaces. Tabs are a part of the syntax of Makefiles.