This is a programming course in computer graphics.
It has three serious prerequisites: a knowledge of C programming (all of the
libraries we will use are in C/C++ and are not java-compatible), knowlege
of algorithms and data structures comparable to CS280, and sufficient mathematical
experience that you can deal with matrices and linear transformations. Math
232 is strongly recommended, but we will actually develop most of the math
we need in class. We will focus in this course on fundamentals: how to develop
tools and algorithms for image synthesis and (to a lesser extent) animation.
Our goal is not to make pretty pictures -- these days people use high-level
software for that, but rather to understand how that software works and to
make some of it ourselves. By the end of this course you should be able to
read some of the current research papers on graphics and to develop new tools
on your own.
Here is a set of man pages for the GL, GLU and GLUT libraries.
This is part of the Python project, which includes an open-source implementation
documentation We will use the GLUI library for user-interface widgets.
This was written by Paul Rademacher. Here is Rademacher's documentation for
GLUI. Sadly, this is for GLUI version 2.0, not the 2.3 version that we are
using. Look at the examples below; they all work with version 2.3.
- Online Books: The following are authorized, online copies of the main OpenGL
reference books. These are both first edition copies and there are newer editions
available in print format, but you should find these adequate for this course:
POVRAY -- The Persistence Of Vision Ray Tracer.
This is a high quality public domain ray tracer. You don't actually need it
for anything in the course, but you may enjoy playing with it. If nothing
else, take a look around the site and check out the sample images created
is the POVRAY
web site, from which you can download the code and also find a number of
utilities and examples.
are some simple
Angel's OpenGL Primer
is a very useful book, but its examples suffer
from two problems: most of them are incomplete, and some of them contain
typos or editing errors. This directory contains demo programs keyed to
the chapters of Angel's book. Some of them are my own, and some are programs
that I derived by extending the examples in the text to complete programs.
A few of them are Angel's, taken from the web site for his book. I tried
to include a comment at the top of each giving its origin and some idea
of what it demonstrates.
is a directory of Ed Angel's examples from his website.
- First Examples: a few demo programs
for both OpenGL and the GLUI library that we will use in the first few classes.
- GLUI_SRC examples. These
are six demo program that came with the new release of the GLUI library source
code. Make of them whatever you want. I've added a Makefile to the directory
that works in our environment, but there isn't much documentation in the code.
- Spline Examples: three demo programs
for illustrating the way OpenGL works with Bezier splines curves and surfaces.
- Texture Examples: Here
are seven examples for working with texture mapping in OpenGL.
- Vector Geometry This is
a handout I have written on some of the essential mathematics for computer
graphics, including some basic geometry, vector operations, and ray-surface
- Transformations This is a handout with the View, Perspective and Window transformations.
- Complete Example This is one complete example taking a line segment from object coordinates to viewer, perspective and window coordinates then clipping it to a viewport.
- Old Final Exam Here is the final I gave two years ago, the last time I taught the course. Take this with a few grains of salt; I emphasize different things each time through the course.