CE325: 3D Computer Graphics

If you have played a computer game or seen a Hollywood movie recently, you have almost certainly experienced 3D graphics. In this module, you will be introduced to developing 3D applications using OpenGL, the industry-standard 3D graphics library. The module will cover programming and practical aspects and the underlying principles: you will learn how 3D graphics toolkits work and some of the underlying maths.


The module is delivered by Dr Adrian Clark; please contact him if these sessions don't agree with your own timetable.

Lecture notes

Copies of all overheads will be handed out in the first session. If you are absent or lose your notes, any spares will be left in a box outside CSEE's School Office. However, you are also welcome to browse through them:

1 Introduction
2 Coordinate systems
3 Coordinate geometry
4 3D coordinate geometry
5 Transformations in OpenGL
6 Rendering
7 Texture mapping

Do also take a look at the summary of formulae that will be available on your exam paper.

Example programs

You are expected to carry out your work under Linux. If you are not experienced with program development under Linux, you will be shown how individually during the laboratory sessions. However, it is a good idea to look at CE316's Linux resources page and to read through its notes on program development under Linux before coming to your first lab session.

All the example programs shown in lectures are available:

Makefile used for compiling programs
opengl-01.c a "hello world" program
opengl-02.c keyboard handling, window configuration
opengl-03.c drawing a square
opengl-04.c drawing a sphere
opengl-05.c moving the viewpoint using gluLookAt
opengl-06.c mouse and keyboard interaction
opengl-07.c a shaded cube
opengl-08.c an articulated arm
opengl-09.c rendering a sphere with lighting
opengl-10.c specifying normal vectors at vertices
opengl-11.c moving a light source with modelling transformations
opengl-12.c displaying images and text
opengl-13.c texture-mapped planes

You will have to rename Makefile.txt to Makefile before using it — the web-server refuses to serve any files without a filetype.

Laboratory sessions

The lab sessions give you an opportunity to put into practice some of the material that you learn in lectures. The software that you write will make use of OpenGL, the industry standard software library for 3D graphics, with implementations on Windows, Linux and MacOS. The demonstrators in the lab sessions are Adrian Clark and Erkan Bostanci.

week 16familiarisation with the development environment
week 17designing and interacting with a cube model
week 18vector manipulation routines

In subsequent lab sessions, you will be working on your assignments.


There are two assignments associated with this module:

Mon 20th February 2012 at 11:59:59 (week 21) Surface plots
Mon 19th March 2012 at 11:59:59 (week 25) Human animation

The two assignments are each worth 20% of the total marks for this module; the remaining 60% comes from the examination held early in the summer term.


If you want to get to grips with the lecture material by working through some problems, there is a set of questions. The multiple-choice questions are there just to warm you up; the other questions are similar to those you will encounter in the summer examination.

General Resources

OpenGL Programming Guide (the "red book")

OpenGL Reference Manual (the "blue book")

Nate Robins' tutorials

© Adrian F. Clark 2010-11