Welcome to The Complete Modern OpenGL and GLSL Shaders Course.
I am a University instructor that has been teaching OpenGL, game design and C++ for over 5 years. I noticed a lack of quality OpenGL courses that teach the theory and the practical aspects of OpenGL and decided to share my knowledge with the world.
Let me guide you through the fascinating world of OpenGL by teaching you the THEORY and the With this course, you walk away with a SOLID foundation of OpenGL, as we will go beyond simply copy-pasting codes without explanation.
Welcome to The Complete Modern OpenGL and GLSL Shaders Course.
I am a University instructor that has been teaching OpenGL, game design and C++ for over 5 years. I noticed a lack of quality OpenGL courses that teach the theory and the practical aspects of OpenGL and decided to share my knowledge with the world.
Let me guide you through the fascinating world of OpenGL by teaching you the THEORY and the With this course, you walk away with a SOLID foundation of OpenGL, as we will go beyond simply copy-pasting codes without explanation.
If you' have basic OpenGL knowledge , this course is perfect for you, as we cover the fundamentals of OpenGL and GLSL shaders and take you to the intermediate level in OpenGL. By the end of this course, you should be able to code your own textures, set up lighting for your 3D scene and move objects in a 3D environment and have a sounds grasp regarding the internals of OpenGL. Additionally, we will cover the theory behind shaders and learn how to write custom GLSL shader code, covering different components like SDL, GLM & VAO. I will also teach you how to work with extensions in OpenGL, and use GLAD to allow modern OpenGL to be used.
Projections are an important part of OpenGL. We cover different projections, namely 2D and 3D, to give you to ability to start moving about in a 3D environment. Students will also learn about different transformations and views, including a tutorial on GLM and how to link the library to your project. Additionally, you will also learn to code GUIs using the famous imgui library.
Sign up for the course now and start your OpenGL journey today.
This video is an introduction to the course and explains what the lessons are about and what skills you will be learning.
You will first learn to keep your project updated, how to install the latest Windows SDK, how to retarget the solution, and how to properly manage their Visual Studio projects using Visual Studio 2022.
You will learn how to keep your 3rd party libraries up to date. The latest SDL and GLM library files will be downloaded and linked to the project. Lastly, you will learn how to link GLAD 2.0 to replace the older version. Finally, code will be cleaned up so we start with better C++ code.
You will learn what EBOs are and how to use them to share vertex and color data. You will add code to their Buffer classes to support EBOs.
You will move away from the simple quad and learn how to create a cube object. You will first understand the basic theory of a cube before learning how to generate vertices, colors and textures to the VBOs to create six faces. You will then learn how the render the cube on screen. Vertex groupings will be covered as well.
You will learn about the depth buffer and how to clear it. They will also learn about blending. After this lesson, the cube will be rendered properly. Color data will be updated to support alpha channels.
You will learn to add another VBO to the mix, one for the normals. This lesson will cover some theory.
You will learn how to create the normal VBO and add normal data to it to be sent to the shader. The Buffer class will require some refactoring.
You will learn how to create a normal matrix and why it's needed to create proper lighting. We will improve the input so that the cube can be moved using mouse click and motion, which will better display the lighting and shading.
You will learn how to use different shaders and why we do this. We will remove the Singleton shader manager and create a regular shader class. The Buffer, Quad and Cube classes will be refactored to support this. Helper code will be setup to save time.
You will first learn all about the Wavefront .obj file format and how it's constructed.
You will create a model class and learn how to load data from .obj files. Helper code will be setup to save time.
You will discover how the loaded data is processed and sorted to form separate meshes. Helper code will be setup to save time.
In this final model loading lesson, you will discover how to fill the VBO buffers with model data and finally, how to render the data. You will then discover how to load example 3D models into the scene. Helper code will be setup to save time.
You will learn all about materials and what they are used for. Some theory will be covered and some examples will be shown. The .mtl file format will be explained in-depth. You will make a start on creating a Material class and make edits to the existing Model class to support materials.
You will continue to build their own material class to manage material data.
You will learn how to build a grid system. This lesson will cover more theory, code design, and pseudocode. A basic Grid class will be created to make a start on things. Students will also refactor the Buffer class to add support for appending data to VBOs.
You will continue to build their grid system. They will create and display the grid.
You make a start on building a proper 3D scene with a grid, a quad, cube and 3D model. You will manage mouse/keyboard input in the Main.cpp source file and create setters to set the position, rotation and scale of the objects. We will use separate shaders to render the grid and all its objects.
You will continue to build the 3D scene. We will demonstrate using a parent Object class and child Quad, Cube and Model classes. Some class refactoring will be performed.
You will get a brief recap lesson on translation, rotation and scale.
You will build a Transform class
You will implement their Transform class in their Camera, Grid and Light classes as well. Special Move() functions will be added to the Light and Camera to control input externally. Camera will be left static with only a zoom in/out feature.
You will pay special attention to parent/child relationships. The Grid will be the parent for all objects to be rendered on. You will understand moving the grid with all of its objects as well as moving the individual object on its own.
You will learn what imgui is and how to set it up.
You will learn how to set up a proper scene area viewport as well as use the imgui classes to build a Console and Properties window with controls.
You will continue building their UI by allowing customizable changes to their objects, such as transformations, color, etc.
You will use asserts and finish off code with good error traps and cleaner code. You will add a global error messaging system to the Utility class to add/receive error messages, which the Console window will make use of.
You will go through the entire codebase and refactor. You will remove redundant code, simplify complex code, and add helper code to their Utility class. You will also create an App class to manage the main application and make main.cpp as small as possible.
You will make sure the project builds properly and that the codebase is clean. All header files must be included in a specific order. You will run a final check to make sure that all C++ code is modernized.
You will be reminded how their project folders are structured and will package their projects correctly.
Some final thoughts, reflecting on the past lessons as well as discussing future ideas of where the course could go.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.