Module 3 - Understanding OpenGL API, Buffers, Shaders, and a first triangle - 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)

Test Your Knowledge (Optional)

[Test your knowledge on the readings] (This is not graded)

...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 focus on creating our first triangle

Module Outline

  • Lecture outline
    • OpenGL Context and Core versus compatibility
    • OpenGL is a C API with global state -- it's a state machine
    • Computer Graphics Pipeline (OpenGL Perspective)
    • Fixed-Function Pipelines
    • Some GPU History
    • Modern Programmable Pipelines
    • Drawing our First Shape
    • A First Shader
    • Vertex Buffer in OpenGL
    • Vertex Attributes and Color
    • Vertex and Fragment Shaders


(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!