An introduction to the principles of the hardware and the software used in the production of computer generated images.  
The objective of this course is to instruct students in 3D graphics programming.  
Topics include graphics programming in a windows environment, basic rendering and color, transformations, font rendering,
selection, lighting, textures, fog, and hidden surface elimination.   The primary focus of the course is the design and
implementation of a major project involving 3D graphics.   The course is intended for students who are proficient in the
development of software systems.
PREREQUISITES: CS3971 or CS3771
Required Text
Woo,
et al,
OpenGL Programming Guide: The Official Guide to Learning OpenGL Version 1.2, 3rd Edition,
Addison Wesley, 2000. ISBN: 0-201-65765-2
Additional References
Recommended for a better knowledge of OpenGL:
D. Sheiner (ed.),
OpenGL Reference Manual: The Official Reference Guide to OpenGL Version 1.2, 3rd Edition,
Addison Wesley, 1999. ISBN: 0-201-60458-2
Recommended for a better knowledge of computer graphics:
Foley, van Dam, Feiner and Hughes,
Computer Graphics: Principles and Practice, Second Edition, Addison Wesley, 1995. ISBN: 0-201-84840-6
F. S. Hill,
Computer Graphics Using OpenGL, Second Edition, Prentice Hall, 2001. ISBN: 0-02-354856-8
Recommended for a better knowledge of programming in Visual C++ IDE and MFC:
David Kruglinski, George Shepherd, and Scot Wingo,
Programming Microsoft Visual C++, Fifth Edition, Microsoft Press, 1998.   ISBN 1-57231-857-0
Kate Gregory, Using Visual C++ 6, QUE, 1998.   ISBN 0-7897-1539-2
Microsoft Visual C++ Help
Internet Resources
Architectural Review Board for OpenGL:
http://www.opengl.org/
Gateway to OpenGL Info (Silicon Graphics):
http://reality.sgi.com/opengl
Great Tutorials from NeHe:
http://nehe.gamedev.net/
Nat Robin’s OpenGL Tutorials:
http://www.xmission.com/~nate/opengl.html
Eight OpenGL technical articles for 3D Color Graphics Programming (Microsoft).   (This is the URL for the
first one.):
http://msdn.microsoft.com/library/techart/msdn_gl1.htm
Course Content
OpenGL Programming in the Win32 Environment
- Introduction to OpenGL (Chapter 1)
- OpenGL Command Syntax
- OpenGL State Machine
- OpenGL Libraries
Basic Rendering and Color (Chapters 2 and 4)
- Color Specification and Use
- Graphics Primitives
- Drawing Primitives
- Polygon Filling
Transformations (Chapter 3)
- Elementary Transformations
- Viewing and Modeling Transformations
- Projection Transformations
- Viewport Transformations
Display Lists (Chapter 7)
- Creating Display Lists
- Recording Display Lists
Font Rendering (Chapter 8)
- Bitmap Characters
- Stroke Characters
- Executing Display Lists
Quadric Objects (Chapter 11)
- Quadric Objects
- Attributes
- Spheres, Cylinders, and Disks
Selection (Chapter 13)
- Selection Buffer
- Rendering Modes
- Name Stack
- Picking Matrix
Lighting (Chapter 5)
- Material Properties
- Light Sources
- Light Model
Frame Buffer (Chapter 10)
- Raster Graphics
- Hidden Surface Elimination
- Decals
Fog (Chapter 6)
- Fog and Depth Queuing
- Linear and Exponential
Vertex Arrays (Chapter 2)
- Enabling Arrays
- Specifying Array Data
- Using Array Data
- Interleaved Arrays
Texture Mapping (Chapter 9)
- Textures
- Texture Objects
- Scaling Textures
- Mipmaps
- Texture Environment (Minification and Magnification)
- Texture Modes
- Assigning Texture Coordinates
Projects and Tests
CS-4202 is a project based course.   Forty-five percent of the student's grade is based upon performance within
a group implementing a chosen class project.
Project Description
There will be one test in approximately week ten, which will count for 25% of the total
grade.   The test will consist mainly of discussion questions and writing code snipets.  
Testable topics will include beginning graphics concepts and the OpenGL concepts covered in class.   The best
preparation is looking at previous quarters' tests.
Labs
It is intended that this course will be hands on to as great an extent as possible.   Nine organized lab periods
will be conducted for the first nine weeks of the quarter.   The labs are designed to familiarize students with the OpenGL API and
prepare them for their projects.   Each lab is designed to be completed during a two-hour lab period.  
Performance in labs makes up the remaining 30% of the class grade. Lab grading will be as follows:
- Each lab will be worth 3%. To get full credit, the student must demonstrate all aspects of the previous week's
lab to me at the start of the lab period.
- Failure to demonstrate the previous lab at the beginning of lab period will result in a loss of 1.5% of the class grade. Failure
to demonstrate that lab by the beginning of the next lab period will result in the loss of the other 1.5%.
- If a student will not be at the beginning of a lab period, he/she must contact me prior to the start of the lab
and deliver the completed lab (as a compressed file via e-mail) prior to the start of the lab period. If students have
hardships which prevent completing the labs on time, they should contact me as soon as possible.
- Students who feel that they might not complete the lab on time are advised to contact me early for
extra instruction.
- Nine labs at 3% is 27%. The final 3% will be awarded to all students who have have either zero or one lab late in
the course of the quarter.
MV-4202 labs
Important Dates:
- Week 4 - Students choose groups for projects
- Week 6 - Students choose topics
- Week 10 - Final exam
- Week 11 - Class presentations during the last lab period
- All deliverables due on day of presentation
Return to Perry McDowell's Home Page
This page last updated on 17 October 2001 and is maintainted by Perry McDowell © Copyright 2001, All rights reserved.
If you have comments or suggestions, e-mail me at
mcdowell@cs.nps.navy.mil