ITCS 6120/8120 Computer Graphics (Fall)
Instructor: Prof. Zachary Wartell
Contents
Overview
- Introduction to the design and implementation of interactive graphics systems. Raster and vector display systems, I/O devices; graphics primitives and their attributes; raster algorithms and clipping; 2D/3D geometric transformations; 3D viewing and projections; hierarchical and procedural models; surface representation; color and lighting models; rendering algorithms; global illumination and texture mapping.
Prerequisites: Graduate student standing and permission of the department. (Your undergraduate experience should include equivalents of ITCS 2214 and MATH 2164)
ITCS 6120/8120 Computer Graphics is a standard course on computer graphics as a discipline in computer science. This differs from a computer graphics course found in an industrial art and design department that might cover how to use computer graphics applications or how to program in a 4th generation programming/scripting languages to develop 2D or 3D visual media presentations (VRML, Macromedia Flash, etc.).
Lecture Slides
Files are in PowerPoint (PPT)
- Lecture 1: Introduction (PPT)
- Lecture 2: Scan Conversion (PPT)
- Lecture 3: OpenGL (2D)
- Lecture 4: Scan Conversion – Part II (PPT)
- Lecture 5: Anti-Aliasing (PPT)
- Textbook: Chapter 4
- Lecture 6: 2D Transforms (PPT), 2D Coordinates (PPT)
- Lecture 7: 2D Viewing (PPT)
- Lecture 8: Transforms in OpenGL and OO Approaches
- Lecture 9: 3D Viewing (PPT)
- Lecture 10: Visibility (PPT)
- Lecture 11: Illumination (PPT)
Lecture Resources
- Midterm Exam will be: TBD
- Final Exam will be: TBD
Project Assignments
Programming assignments will use C++, OpenGL, and GLUT.
- Projects and Assignments
- Project 1
- Project 2
- Project 3
- Project 4
Programming References
- OpenGL:
- http://www.opengl.org – [General] The official OpenGL website. There are lots of information resources here. Some of the most helpful ones for this class are listed separately below. This class will only use features found OpenGL versions 1.4 and earlier.
- The OpenGL Programming Guide – [Introductory] (HTML, SAMPLE CODE) These links reference a freely available copy of the original introductory programming guide for OpenGL version 1.1. This guide and its later commercial versions are affectionately called “The Red Book”. OpenGL has since advanced to version 2.1. (The latest commercial “Red Book” covers 2.1). Note, the course textbook (H&B) includes an introduction to OpenGL including various v1.5 features. In combination, H&B, the free version of the “Red Book v1.1”, and an OpenGL reference manual (see below) should be sufficient for the OpenGL aspects of the programming projects.
- The Open GL Reference Manual – [Introductory] (HTML) The official printed OpenGL Reference Manual is affectionately called “The Blue Book“. The reference manual is mostly a list of each OpenGL function with a description of what it does, its parameters, etc.
- Nate Robins OpenGL tutors – [Introductory] (HTML) These are programs written in OpenGL that illustrate how various OpenGL API functions work.
- “The OpenGL Graphics System: A Specification (Version 2.1)” – [Advanced] This is the official highly, excrutiatingly detailed specification of OpenGL 2.1. This can be a useful resource for understanding deeper details of the design and inner working of the OpenGL specification for advanced OpenGL programmers.
- OpenGL + GLUT:
- GLUT is a very simple cross platform API for creating a windows and handling GUI events. It is designed for making cross-platform OpenGL applications. Many books such as your textbook and the “OpenGL Redbook” use GLUT in their code examples.
- GLUT manual – [HTML PDF] Here are the reference manual for GLUT. Again your text book and the OpenGL ‘Redbook’ provide some introduction to GLUT as well.
- C++ [Introductory]
- C++ for Java Programmers, Timothy Budd, 1999
- C++ Primer Plus: Teach Yourself Object-Oriented Programming, Stephen Prata
- http://www.cplusplus.com/
The following links have been suggested by other students as useful tutorials on learning C++ assuming you know Java
- http://www.cs.brown.edu/courses/cs123/javatoc.htm
- UNC Charlotte Resources
- http://www.cci.uncc.edu/coit_new/techsupport/msdnaa.cfm – If you will not be working in the Woodward 335 lab, MSDNAA “allows any faculty member or any student actively registered for any CCI course to download and use most Microsoft software.” You can get a copy of Microsoft Visual Studio 2005 using the Microsoft Developer Network Academic Alliance (MSDNAA).
You will need “Visual Studio .NET 2005 Professional.” - – If you need more disk space for this class submit the Disk Quota form on this page.
- http://www.cci.uncc.edu/coit_new/techsupport/msdnaa.cfm – If you will not be working in the Woodward 335 lab, MSDNAA “allows any faculty member or any student actively registered for any CCI course to download and use most Microsoft software.” You can get a copy of Microsoft Visual Studio 2005 using the Microsoft Developer Network Academic Alliance (MSDNAA).