Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

freeCodeCamp

OpenGL Course - Create 3D and 2D Graphics With C++

via freeCodeCamp

Overview

This course teaches how to create 2D and 3D vector graphics using OpenGL with C++. The learning outcomes include understanding graphics pipelines, shaders, textures, matrices, lighting techniques, and types of light sources. Students will also learn about camera manipulation, specular maps, mesh classes, and model loading. The course utilizes a hands-on approach with practical coding examples and explanations. The intended audience for this course is individuals interested in computer graphics, game development, or visual simulations, with a basic understanding of C++ programming.

Syllabus

Introduction to Course.
Downloads.
Setting Up VS Project.
Generating GLFW.
Build Solution GLFW.
Importing Libraries.
Configuring VS.
Finishing up & Testing.
Initializing GLFW.
Configuring GLFW.
Creating Window.
While Loop.
OpenGL Viewport.
Buffer Explanation.
Adding Color.
Comments for Window.
Graphics Pipeline.
Shaders Source Code.
Vertices.
Vertex and Fragment Shaders.
Shader Program.
Vertex Buffer Object.
Vertex Array Object.
Cleaning Up.
Rendering Loop.
Comments for Triangle.
Normal Triangle.
Duplicate Vertices.
Solution.
Index Buffer.
Implementation.
Comments for Index Buffer.
Introduction to Organizing.
Shader Text Files.
Shader Class.
VBO Class.
EBO Class.
VAO Class.
Adding Classes to Main.cpp.
Comments for Organizing.
Introduction to Shaders.
Shaders Properties.
Vertex Shader.
Fragment Shader.
Adding Colors.
Modifying the VAO class.
Vertex Attribute Pointer Explanation.
linkAttrib Code.
Interpolation.
Uniforms.
Error Checking Shaders.
Comments for Shaders.
Types of Textures.
stb Library.
Square.
Texture Sizes.
Importing in an Image.
Creating the Texture.
Texture Units.
Interpolation Types.
Texture Mapping.
Assigning the Image to the Texture.
Errors.
Mipmaps.
Texture Coordinates.
Vertex and Fragment Shaders.
Finishing up.
Texture Class.
Comments for Textures.
Introduction to Going 3D.
Correction.
Matrices.
GLM.
Coordinate Types.
Transformation Matrices.
Matrix Initialization.
View & Projection Matrices.
Importing Matrices.
Matrices Final Multiplication.
Pyramid.
Rotation & Timer.
Depth Buffer.
Comments for Going 3D.
Header File.
Basic Camera Class Functions.
Main File Changes.
Vertex Shader Changes.
Key Inputs.
Mouse Inputs.
Fixing Camera Jumps.
Comments for Camera.
Modify Camera.
Light Cube.
Light Color.
Diffuse Lighting & Normals.
Ambient Lighting.
Specular Lighting.
Comments for Lighting.
Modify Texture Class.
Plane With Texture.
Specular Maps Theory.
Implementing Specular Maps.
Ending for Specular Maps.
Types of Light.
Point Light.
Intensity Attenuation.
Inverse Square Law.
CG Intensity Equation.
Implementation of Attenuation.
Directional Light.
Spotlight.
Light Cones.
Cones Comparison.
Cos vs Angle.
Finishing the Spotlight.
Comments for Types of Light.
Introduction for Mesh Class.
Mesh Definition.
Mesh Class Header.
Modify the VBO Class.
Modify the EBO Class.
Mesh Constructor.
Rearrange Shader Layouts.
Mesh Draw Function I.
Modify the Texture Class.
Mesh Draw Function II.
Modify the Uniforms.
Main.cpp Changes.
Comments for Mesh Class.
Introduction for Model Loading.
Small Note on 3D Models.
JSON Library.
Model Header.
Model.cpp File.
JSON File Structure.
Getting the Binary Data.
glTF File Structure.
getFloats() and getIndices().
Grouping Functions.
assembleVertices().
Modifying the Texture Class.
getTextures().
loadMesh().
Matrix Transformations Explanation.
traverseNode() Declaration.
Modifying the Mesh Class.
Modifying the Vertex Shader.
traverseNode() Writing.
Modifying the Main.cpp File.
Examples of Models.
Comments for Model Loading.

Taught by

freeCodeCamp.org

Reviews

Start your review of OpenGL Course - Create 3D and 2D Graphics With C++

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.