CS559 - Computer Graphics



All the programs you write in this class will be in C++. There are three main reasons for this:

Most of you are familiar with Java, which conceptually is not far removed from C++. However, the syntax is significantly different and C++ requires you to do your own memory management (with no garbage collection).

For the projects in this course, you will not require most of the advanced features of C++, such as operator overloading, exception handling and templates. Such things may make some aspects of your programs cleaner or easier to write, but are probably not worth the time investment to learn about just for this class. You will need to know about classes, inheritance and memory management (new and delete).

The CS department offers a web based course, CS 368 for learning C++ assuming you know Java. That may be one way to get up to speed, might it may be too slow.

There are many books on C++. Three common ones for computer scientists are:

Meyers' other books also come highly recommended, but are beyond the scope of this course.

Your projects for this class must run under Visual C++ on the machines in room B240.


FLTK is a user interface toolkit that provides things like buttons and menus. Most important for us, it also provides simple support for OpenGL windows. The documentation for FLTK is available off the FLTK home page www.fltk.org.

FLTK is portable across Windows and UNIX, another very good thing about it. There is no reason for you not to do your development under UNIX if you wish, but make sure it also works under Visual C++ in room B240.

There is a FLTK tutorial written by Mark Pingel, aimed particularly at CS 559 students.


The source for LibTarga is available here, should you wish to download it for home. You will need to build at least the debug multithreaded configuration (which may not be the default). Note also that the pathnames to get to the include files and libraries will be different than those used at school.

LibTarga was written by Alex Mohr.


The best OpenGL resource is "the red book", one of the textbooks for this class. There is also a pure reference book (the blue book) which has all the functions in it, but it assumes you already know what you're looking for.

Prof Gleicher prepared an OpenGL Survival Kit to help with learning OpenGL.

The OpenGL libraries come with all recent incarnations of Windows. For UNIX based systems, machines intended for graphics generally have hardware OpenGL libraries for X windows. For generic UNIX machines (eg linux), there is a software implementation of OpenGL call MesaGL. Recent RedHat distributions include Mesa as an optional RPM. Other distributions no doubt do likewise. In principle, there is nothing to stop you developing under UNIX and doing a quick port at the end (everything has a UNIX version), but there will be no support for this. Finally, if you're a true hacker and want to modify your linux kernel and X libraries, and you have an nvidia based graphics chipset, you can obtain hardware OpenGL drivers. I use them and they're great. Recent linux distributions may include them already.

Back to CS559 Home Page
Last modified: Mon May 20 11:44:41 CDT 2002