We may earn an affiliate commission when you visit our partners.
Experiential Learning and Pragmatic Institute

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.

Read more

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.

Enroll now

Here's a deal for you

We found an offer that may be relevant to this course.
Save money when you learn. All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Syllabus

Introduction

This video is an introduction to the course and explains what the lessons are about and what skills you will be learning.

Read more

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.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Builds upon existing OpenGL knowledge, taking learners from fundamental concepts to intermediate-level skills in 3D graphics programming
Covers GLSL shaders, which are essential for creating custom visual effects and enhancing the rendering pipeline in OpenGL applications
Explores the Wavefront .obj file format, which is a common standard for storing 3D model data, enabling learners to import and manipulate complex 3D assets
Employs Visual Studio 2022, which is a modern IDE, ensuring that learners are using up-to-date tools and practices for software development
Requires learners to download and link third-party libraries, which may present a challenge for beginners who are not familiar with dependency management

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Modern opengl: shaders, models, and gui

According to learners, this course provides a solid foundation in Modern OpenGL, combining theory and practical aspects. Students appreciate the focus on modern OpenGL techniques and specific topics like GLSL shaders, model loading, and building a imgui GUI. The course emphasizes going beyond simple examples and teaches clean code practices, equipping learners with practical skills for 3D graphics programming.
Teaches cleaner, modern C++ practices.
"I liked how the instructor refactored code and showed how to make it cleaner."
"Learning to manage libraries and project structure properly was a valuable takeaway."
"The final lessons on refactoring the codebase were beneficial for building maintainable projects."
Focuses on recent OpenGL versions.
"I appreciate that the course uses modern OpenGL via GLAD 2.0."
"It was good to see the project set up using Visual Studio 2022 and recent libraries."
"Using updated third-party libraries felt current and relevant."
Teaches key skills like models and GUI.
"Loading 3D models (.obj files) was a really useful practical skill to learn."
"Implementing the imgui GUI added a great dimension to building interactive applications."
"Learning about materials and shaders deepened my practical graphics programming abilities."
Builds a solid understanding of theory.
"The course didn't just show code, it explained the theory behind OpenGL concepts."
"I feel like I'm getting a solid grasp on the internals, not just copy-pasting."
"Understanding why things work, like the depth buffer or normal matrices, was very helpful."
Setting up libraries might be tricky.
"Getting all the third-party libraries linked correctly was a bit challenging."
"Dealing with different compiler versions or Windows SDK issues might require extra steps."
"Ensure you follow the setup instructions very carefully, as dependencies can be finicky."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Modern OpenGL & GLSL Shaders: Models, Shaders and imgui 2022 with these activities:
Review Linear Algebra Fundamentals
Reinforce your understanding of linear algebra, which is crucial for understanding transformations, projections, and camera movements in 3D graphics.
Browse courses on Linear Algebra
Show steps
  • Review matrix operations such as multiplication and inversion.
  • Study vector spaces and linear transformations.
  • Practice solving linear systems of equations.
Read 'OpenGL Programming Guide'
Supplement your learning with the official OpenGL guide, which provides in-depth explanations and examples of OpenGL concepts.
Show steps
  • Read the chapters relevant to the current course topics.
  • Experiment with the code examples provided in the book.
  • Use the book as a reference when working on assignments.
Implement Basic Shaders
Solidify your understanding of GLSL shaders by implementing basic vertex and fragment shaders for different effects.
Show steps
  • Write a vertex shader that transforms vertex positions.
  • Write a fragment shader that outputs a solid color.
  • Modify the shaders to implement simple lighting effects.
  • Experiment with different shader parameters and uniforms.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Read 'Real-Time Rendering'
Expand your knowledge of real-time rendering techniques with this comprehensive guide, covering shading, texturing, and lighting.
Show steps
  • Read the chapters relevant to the course topics.
  • Study the algorithms and techniques described in the book.
  • Implement some of the techniques in your own projects.
Create a Shader Visualizer
Deepen your understanding of shaders by creating a visualizer that allows you to experiment with different shader parameters in real-time.
Show steps
  • Set up an OpenGL context and window.
  • Create a user interface for controlling shader parameters.
  • Write shaders that respond to the user interface controls.
  • Display the output of the shaders in the window.
Contribute to an OpenGL Project
Enhance your skills by contributing to an open-source OpenGL project, gaining experience with real-world codebases and collaborative development.
Show steps
  • Find an open-source OpenGL project on GitHub or GitLab.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.
Build a Simple 3D Game Engine
Apply your knowledge by building a simple 3D game engine, incorporating model loading, shader management, and scene management.
Show steps
  • Set up an OpenGL context and window.
  • Implement model loading from .obj files.
  • Create a shader manager class.
  • Implement a scene graph for managing objects.
  • Add basic camera controls and movement.

Career center

Learners who complete Modern OpenGL & GLSL Shaders: Models, Shaders and imgui 2022 will develop knowledge and skills that may be useful to these careers:
Graphics Programmer
A graphics programmer specializes in creating and implementing visual effects and rendering techniques. They are responsible for optimizing graphical performance, developing rendering pipelines, and writing shaders. This course helps you build a foundation in OpenGL and GLSL shaders, which are essential tools for any graphics programmer. The course covers the theory and practical aspects of OpenGL. You'll learn how to code your own textures, set up lighting, and move objects in a 3D environment. The topics on GLM and VAO are highly relevant for a graphics programmer, who needs a strong understanding of the underlying rendering concepts.
Game Developer
Game developers bring video games to life, working on everything from gameplay mechanics to artificial intelligence and, of course, graphics. This course is designed to provide a solid foundation in OpenGL, a vital skill for game development, particularly for rendering 3D graphics. By learning to code textures, set up lighting, and manipulate 3D environments using OpenGL and GLSL shaders, you will gain practical experience directly applicable to game development. The sections covering 3D projections, transformations, and the use of libraries like GLM and imgui are especially crucial for creating immersive and interactive gaming experiences.
Rendering Engineer
A rendering engineer focuses on the algorithms and techniques used to generate images from 3D models. Rendering engineers work on optimizing rendering performance and creating realistic visual effects. This course directly addresses these skills by teaching the fundamentals of OpenGL, GLSL shaders, and 3D projections. The course also covers topics such as normals, normal matrices, and lighting, all of which are indispensable for a rendering engineer. With the material of this course, you can be well on your way to writing custom shader code and understanding the intricacies of the rendering pipeline.
Simulation Developer
Simulation developers create software that simulates real-world or hypothetical scenarios. They use tools like OpenGL to visualize these simulations and create interactive experiences. The course's coverage of OpenGL and GLSL shaders provides the necessary skills to render 3D environments and objects within a simulation. The course goes beyond simply copy-pasting code and focuses on the underlying theory. Skills such as coding custom textures, setting up lighting, and using GLM for transformations are directly applicable to creating realistic and interactive simulations.
Virtual Reality Developer
Virtual reality developers create immersive experiences using specialized hardware and software. They use 3D graphics and rendering techniques to create realistic virtual environments. This course is a stepping stone to becoming a VR developer because it provides the fundamentals of OpenGL and GLSL shaders. You can learn how to render 3D scenes, manipulate objects in virtual space, and create interactive experiences. Instruction on 2D and 3D projections are essential for creating believable VR environments. The material on transformations and views with GLM can help you create compelling VR experiences.
Augmented Reality Developer
Augmented reality developers overlay computer-generated images onto the real world using devices like smartphones and AR headsets. They require expertise in 3D graphics and rendering to create seamless AR experiences. This course provides the essential knowledge of OpenGL and GLSL shaders. The course will teach you how to render 3D objects, integrate them with real-world environments, and optimize performance for mobile devices. The course covers topics such as transformations, projections, and lighting, all of which are essential for AR development. The GLAD extension covered in the course will allow you to use modern OpenGL.
Visualization Engineer
Visualization engineers transform complex data into visual representations. They often work with 3D graphics libraries like OpenGL to create interactive visualizations. You will build a strong foundation in OpenGL and GLSL shaders with this course, which is crucial for any visualization engineer. You will learn how to render 3D scenes, manipulate data using shaders, and create interactive user interfaces. The course covers topics such as projections, transformations, and the imgui library, all of which are valuable for creating effective data visualizations. A visualization engineer benefits from OpenGL's performance.
Software Engineer
Software engineers design, develop, and maintain software systems. While not always directly involved in graphics programming, software engineers may work on projects that require 3D rendering or data visualization. This course helps software engineers expand their skill set and tackle projects involving 3D graphics using OpenGL. You will develop skills in rendering pipelines, shader programming, and 3D transformations. Knowledge of OpenGL can be beneficial for software engineers working on game engines, data visualization tools, or other graphically intensive applications. You will also be able to manage projects using Visual Studio 2022.
User Interface Designer
User interface designers create intuitive and visually appealing interfaces for software applications. While not typically focused on 3D graphics, UI designers may benefit from understanding the principles of rendering and visual effects. This course may be helpful for understanding the underlying technology behind UI frameworks that use 3D rendering. UI designers can benefit from the course's coverage of the imgui library, which can be used to create custom user interfaces within OpenGL applications. UI designers can develop a better understanding of how rendering affects UI performance and visual quality.
Web Developer
Web developers create and maintain websites and web applications. While OpenGL is not directly used in traditional web development, WebGL, a JavaScript API based on OpenGL ES, is used for rendering 3D graphics in web browsers. This course may be useful for web developers interested in creating interactive 3D experiences on the web. You can gain a foundational understanding of OpenGL concepts, which can be helpful when working with WebGL. The knowledge of shaders and rendering pipelines from this course can be applied to create visually stunning web-based 3D graphics.
Embedded Systems Engineer
Embedded systems engineers design and develop software for embedded devices, such as smartphones, tablets, and automotive systems. Some embedded systems require 3D graphics capabilities, and OpenGL ES is a common API for rendering graphics on these devices. This course may be helpful for embedded systems engineers working on projects involving 3D graphics. You can gain a foundation in OpenGL concepts and shader programming, which can be applied to OpenGL ES development on embedded systems. You will also learn about performance considerations and optimization techniques relevant to resource-constrained embedded environments.
Technical Artist
A technical artist bridges the gap between artists and programmers, ensuring art assets are efficiently integrated into a game or application. This course can assist in understanding the technical aspects of 3D graphics. A technical artist will be able to understand how shaders work. You'll learn how to work with different projections, transformations, and views, as well as the use of libraries like GLM. This knowledge allows a technical artist to optimize assets and collaborate effectively with the programming team.
Data Scientist
Data scientists analyse and interpret complex data to identify trends and insights. While not directly related to 3D graphics, data visualization can play a crucial role in communicating findings. This course may be helpful for data scientists interested in creating interactive 3D visualizations of data. You may find value in the fundamental concepts of OpenGL. By learning about rendering pipelines and shader programming, you can create custom visualizations to explore and present data in new and engaging ways. The imgui library covered in the course can also be used to create interactive controls for data exploration.
Robotics Engineer
Robotics engineers design, build, and program robots for various applications. Some robotics applications require 3D visualization for tasks such as robot navigation, object recognition, and simulation. This course may provide a basic understanding of 3D graphics concepts that can be useful in certain robotics contexts. Robotics engineers can potentially use the tools to render 3D environments and objects within simulations. The course's coverage of transformations and projections can also be relevant for tasks such as robot localization and mapping.
Quality Assurance Tester
Quality assurance testers ensure software products meet quality standards. While not requiring in-depth knowledge of 3D graphics, QA testers working on games or applications with 3D graphics may benefit from some familiarity with the rendering process. This course may be useful for gaining a basic understanding of OpenGL and GLSL shaders. Testers can develop a better understanding of common graphical issues and potential performance bottlenecks. This knowledge can help them identify and report bugs more effectively, as well as communicate more clearly with developers about graphics-related issues, making it easier for them to test.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Modern OpenGL & GLSL Shaders: Models, Shaders and imgui 2022.
Is the official guide to OpenGL and provides comprehensive coverage of the API. It serves as an excellent reference for understanding the core concepts and functionalities of OpenGL. It is commonly used as a textbook in university courses and by industry professionals. This book adds depth to the course by providing detailed explanations and examples of OpenGL features.
Provides a comprehensive overview of real-time rendering techniques, including shading, texturing, and lighting. It valuable resource for understanding the underlying principles of modern graphics rendering. This book is more valuable as additional reading than it is as a current reference. It adds breadth to the course by covering a wide range of rendering techniques.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

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.

Affiliate disclosure

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.

© 2016 - 2025 OpenCourser