Undergraduate Computer Graphics
Writing computer graphics code was pretty easy for a while, but in recent
years the hardware has gotten so complicated
that writing the software has gotten quite difficult again.
On the bright side, it means that in this course you will get a
understanding of interactive computer graphics (how video games work),
from hardware through graphic design.
We'll use a version of the "Modern OpenGL" API, roughly the
part of OpenGL 2 which is shared with OpenGL 3.
Inside a virtual spaceship, by student Matt Hibbs.
Professor: Nina Amenta
Lecture: MWF 10:00-10:50, 166 Chemistry
Lab Hours: Wds 2-4, in 71 Kemper
Teaching Assistant: Zehra Shah, zshah "at" ucdavis.edu
Discussion Section: Fri 3:10-4:00 166 Chemistry
Lab Hours: Thurs 1-3, 71 Kemper
Lectures and reading
- Example OpenGL programs to
test your OpenGL setup on your machine.
- Project 1 - Big Pixels,
Due 10pm Mon Apr 16
- Project 2 - Fractal Plant,
Due 10pm Mon Apr 30
- Project 3 - Glass Ball 3D Interface,
Due 10pm Mon May 21
- Project 4 - Virtual World,
Due 10pm Mon June 4
The textbook is:
Fundamentals of Computer Graphics, 3rd Edition (2nd Edition would be fine too)
Peter Shirley, et. al.
A K Peters, Ltd., 2005
You may also want to buy:
OpenGL ES 2.0 Programming Guide
Aaftab Munshi, Dan Ginsburg, Dave Shreiner
This is the book for the embedded systems OpenGL (eg. on phones), and
although we are not using OpenGL ES it is essentially the same as the
subset of OpenGL that we are using, without any extraneous stuff.
WebGL (for applications embedded in a browser) is also very similar.
Basically we will use the commands described in BOTH the
OpenGL 2.1 reference page
OpenGL 3.3 reference page.
There are many Web pages about OpenGL, but it is hard to know
which to use since different versions of OpenGL are very different
from each other - OpenGL 4 has little in common
with OpenGL 1.
OpenGL Wikibook is a great source of examples for the "modern"
sort of OpenGL 2 we'll be using.
Here tutorial number 6, with libraries and Makefiles,
which run in the labs in Kemper.
Here is a Mac version, and here is a Windows version.
Get this running on your machine and you should be good to go.
- A good online source for learning about graphics is
Mount's lecture notes from the University of Maryland (although using
OpenGL 1; once again, ignore the code fragments).
GLUT library connects OpenGL to your operating system's windows, in
a fairly portable way. So, you can develop on your machine at home and get
the same program to run on the machines in the lab.
- The OpenGL math library, glm,
helps with a lot of the basic