Module 2 - Pixels, Images, and Image Coordinate Systems - Module Overview
1.) Introduction to Computer Graphics, APIs, OpenGL and C++
2.) Pixels, Images, and Image Coordinate Systems
3.) Understanding OpenGL API, Buffers, Shaders, and a first triangle
4.) 3D Transformations and Linear Algebra
5.) Rotations, Meshes, and Mesh Representation
6.) Camera and Textures
7.) Basic Lighting, Point, Lights, and Multiple Lights
8.) Advanced Lighting (Specular, Normal and Parallax), Engine Study
9.) Framebuffer Objects (FBO) - post-processing and shadows
10.) Terrain Rendering (Heightmaps, skyboxes, billboards, instancing, and water)
11.) Scenegraphs and Geometry Shaders
12.) Advanced Graphics - Physically-Based Rendering and Deferred Rendering
13.) Instructors Choice -- TBD (e.g. Multi-texture, Cartoon, animation, particles)
14.) Final Projects, wrap up! (do your course evaluation please :))
15.) (Optional) Vulkan and other APIs
16.) (Optional Bonus) - Quaternion Math
☰ Select another Module

Audio/Video Recording


Readings/Warmup (Do before class)

...Commented Code Samples (if any)

For now I am linking code samples here: Github Code Repository for the course

Additional Resources


(Graded) In-Class Activity link

  • In-Class Activity Link
    • This is graded, and only your first response is graded
    • This is an evaluation of what was learned in lecture.
    • Due one week from when the lecture takes place

Module Content

Module Overview

In this module we continue learning C++ and learn about images

Module Outline

  • Lecture outline
    • Understanding images
    • images (cpu) versus 'textures' (GPU)
    • Pixels
    • Components of a pixel (RGB, RGBA)
    • Image Formats (bitmap, PPM, exr, etc.)
    • Accessing Pixel Data as an array or 2D-array (and with std::vector)
    • Using GIMP to create PPM (Ascii format) Images
    • Organizing a C++ Project for an Image Loader
    • Understanding the C++ compilation process
    • Viewing and Display Images in SDL


(Optional Notes)


Note: On occassion I might add some notes here (e.g. common questions from office hours), so consider this a 'beta' product.

  • To
  • be
  • determined

Perhaps some relevant snippet below!

int main(){

    return 0;

Please do not redistribute or host any materials without e-mailing me first. I generally am happy to share the latest .pdf or slide presentation with those who ask. Thank you for your time!