OpenGL Lessons
- What will you learn?
- Lesson structure
- Glossary of OpenGL Terms
- Chapter 0. Getting Started with OpenGL
- Chapter 1. Lighting in OpenGL
- Chapter 2. Loading Models into OpenGL
- Chapter 3. Advanced OpenGL
- Chapter 4. Advanced Lighting in OpenGL
- Chapter No. 5. PBR to OpenGL
- Additional lessons
- Creating the Breakout Game in C++/OpenGL
- The finale
OpenGL ( Open Graphics Library ) is generally considered an API that provides a large set of functions that we can use to manipulate graphics and images. More specifically, OpenGL is a specification developed and maintained by the Khronos Group.
Whether you’re learning OpenGL for educational or career purposes or simply looking for a new hobby, these free graphics programming lessons will teach you the basics and all the necessary details of working with OpenGL. The goal of this tutorial is to show you everything there is to know about modern OpenGL in an easy-to-understand way with visual examples, as well as provide a background for your subsequent research/digging deeper into the topic.
These lessons are aimed at both those new to graphics programming and more experienced programmers who would like to learn and systematize their knowledge. This OpenGL tutorial also discusses practical concepts that, with a little extra creativity, can turn your ideas into real 3D applications. If all this hasn’t scared you off yet, I invite you to join me on this journey.
What will you learn?
Learning (and using) OpenGL requires a deep knowledge of graphics programming and an understanding of how OpenGL works “under the hood” to truly get the most out of your upcoming experience. Therefore, we’ll begin by discussing the basic graphics aspects, clarifying how OpenGL actually works to draw pixels on your screen, and how we can use this knowledge to create some unusual effects.
Beyond the basics, we’ll also discuss a variety of useful techniques you can use for your own applications, such as moving scenes, creating beautiful lighting, loading custom objects from modeling programs, using post-processing, and much more. We’ll also create a short game with you, applying the OpenGL knowledge you’ve just learned, so you can truly get a feel for what it’s like to be a graphics developer.
Since OpenGL is a graphics API and not a platform itself, you’ll need a programming language to work with it. In our case, that’s C++, so you’ll need some knowledge of C++. You don’t need to be a C++ expert, but you should be able to write something more than a simple “Hello, world!” program. For additional knowledge, the C++ tutorials on 365education.org are a great place to start, as each topic is covered in a separate lesson, and you can always refer to them for detailed explanations.
These lessons will also involve mathematics (linear algebra and geometry, along with trigonometry), which I will also try to explain as needed. However, I am not a professional mathematician, so while my explanations may be clear, they will likely be incomplete. Therefore, where necessary, I will point to good resources that explain the material in more detail. Don’t be intimidated by the math; it’s not that scary. Most of the functionality we’ll be working with won’t require you to understand all the ins and outs of mathematics, as long as you know how to use it.
Lesson structure
Our learning path is divided into sequential chapters. Each chapter contains lessons in which we’ll explore various concepts in detail. Because the lessons are sequential, it’s best to start from the beginning, as each subsequent lesson builds on the concepts covered in the previous one.
Glossary of OpenGL Terms
Chapter 0. Getting Started with OpenGL
Lesson #2. Preparing for Your First OpenGL Project: Setting Up GLFW, CMake, and GLAD
Lesson #3: Our First OpenGL Project – Creating a Window
OpenGL and Linux: Installing and Configuring Code::Blocks
Lesson #4: Drawing Our First Triangle in OpenGL
Lesson #7: Transformations in OpenGL
Chapter 1. Lighting in OpenGL
Lesson #11: Basic Lighting in OpenGL
Lesson #12: Object Materials in OpenGL
Lesson #13: Lightmaps in OpenGL
Chapter 2. Loading Models into OpenGL
Chapter 3. Advanced OpenGL
Lesson #19: Depth Testing in OpenGL
Lesson #20. OpenGL stencil test
Lesson #21: Blending in OpenGL
Lesson #22: Edge Culling in OpenGL
Lesson #23: Framebuffers in OpenGL
Lesson #24: Cube Maps in OpenGL
Lesson #25: Advanced OpenGL Data Interaction Techniques
Lesson #26: Advanced GLSL Features in OpenGL
Lesson #27: Geometry Shaders in OpenGL
Chapter 4. Advanced Lighting in OpenGL
Lesson #30: Advanced Lighting in OpenGL
Lesson #31: Gamma Correction in OpenGL
Lesson #32: Shadow Rendering in OpenGL
Lesson #33: Omnidirectional Shadow Maps in OpenGL
Lesson #34: Normal Maps in OpenGL
Lesson #35: Parallax Effect in OpenGL
Lesson #36: HDR and Tone Mapping in OpenGL
Lesson #37: Glow Effect in OpenGL
Chapter No. 5. PBR to OpenGL
Additional lessons
Creating the Breakout Game in C++/OpenGL
Part 1: Introduction to Creating the Breakout Game in C++/OpenGL
Part 2: Preparing to Create the Breakout Game in C++/OpenGL
Part 3: Rendering Sprites in Breakout in C++/OpenGL
Part 4: Creating Levels in Breakout Using C++/OpenGL
Part 5: Adding a Ball to the Breakout Game in C++/OpenGL
Part 6: Collision Detection in Breakout in C++/OpenGL
Part 7: Collision Handling in Breakout in C++/OpenGL
Part 8: Creating a Particle System in Breakout Using C++/OpenGL
Part #9: Post-processing in Breakout in C++/OpenGL
Part #10: Breakout Bonus System in C++/OpenGL
The finale
Explore More IT Terms
A
B
C
D
E
F
H
K
W
- What are databases, and why do they need DBMS and SQL?
- What do Linux distributions consist of?
- What is a GPU in a computer, in simple terms?
- What is Linux? The History of Linux
- What is the OSI Model: A Complete Explanation of the Seven Layers and Their Role in Networking
- Which Linux distribution should you choose? A Linux distribution overview
