History & Setup

What is OpenGL and where did it come from? Who looks after it and what does it cover? We see the history of the specification from a feature viewpoint and discuss how to set it up on Windows, Linux and Mac. We discuss what GLUT is and why it's used and analyze a simple OpenGL/GLUT application.

Slides

Transformations

Overview of x86 hardware and an overview of the basic fixed function architecture of OpenGL and what each stage does. Briefly introduces newer programmable vertex and fragment functionality. Discusses coordinate systems used when modeling scenes and transforming object. Explains the set of transformations OpenGL uses and how they are used. Viewing matrix mode and matrix stacks are introduced as well as projection.

Slides

Drawing & Shapes

Outlines the use of glBegin() and glEnd() for drawing primitives in OpenGL. We also look at glVertex() and glColor() and how they are used. All the primitives available in OpenGL, as described in the glBegin() specification, are presented. Culling is also addressed when talking about how shapes have "sides" defined by vertex drawing order.

Slides

GLUT

All the basics you need for a full GLUT based OpenGL program.

Slides

Models, Transparency and Animation

What are models and why do we use them. Popular model file formats and an example. How to setup and use transparency in OpenGL. Basics of animation, using time based motion over frame based.

Slides

Texturing

All about texturing including advanded uses like bump mapping and environment mapping.

Slides

Lighting

All about the OpenGL lighting functions. Discusses the three components of lighting: Global Light Model, Light Parameters and Surface Materials. Also talks about spotlights and attenuations with some example screenshots from this weeks example code. A brief mention of shadowing techniques.

Slides

Advanced Modeling

Modeling software and the 3DS file format. How to load models into OpenGL with 3DS used as an example.

Slides

Collision Detection

From the basics of collision detection to spatial partitioning to physics processing units.

Slides