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
- A Guide to SQL Query Formatting
- A/B testing
- Agile
- Algorithm
- Algorithm complexity in 5 minutes
- Algorithms and Data Structures in C#
- An overview of the C # programming language
- An overview of the Python programming language
- Anaconda Python
- Android
- Android App Bundle
- Android SDK
- Angular
- Ansible
- Apache
- Apache Airflow
- Apache Kafka
- Apache Tomcat
- App Store
- AppCode
- Applications of microcontrollers: From simple circuits in electronics to complex systems
- Applications of the derivative
- Arduino: How to Program It: Basics for Beginners
- Array-based stack
- ArrayList
- ASCII
- ASP.NET
- Assembly Language Lessons
B
C
D
- Data Analytics: applications of data analysis in companies
- Data Engineer - Who is it, what does a data engineer do, and an overview of the profession
- Data modeling: what it is, types, and process steps.
- Data preprocessing: a complete guide for beginners and professionals.
- Data structure
- Data structures
- Deep Learning
- Defining Aliases
- Defining Arrays
- Deque
- Developing a Website from Scratch
- Differential Equations
- Differentiation of functions
- Digital data: understand the importance of this asset for businesses.
- Double integrals
- Doubly linked lists
E
F
H
- Handling errors and exceptions
- How to effectively organize your workflow
- How to Learn Java: Tips for Beginner Developers
- How to Learn PHP: A Beginner's Guide
- How to Use S3 Storage in Kubernetes with CSI
- HTML
- HTML and CSS: Definition, Application, and Operating Principles
- HTML and CSS. Layout from Scratch: What to Learn, Where to Learn, and How Long Will It Take?
- HTML Frame Structure
- HTML Link Formatting
I
- if..else construction
- Infinite sequences and series
- Inheritance in Java: A Complete Guide to Principles and Implementation
- Inserting an Image
- Integration of functions
- Interactive Python Tutorial – Learn Programming from Scratch
- Interview Problem: Finding a Deleted Element in O(N)
- Interview Scare: The FizzBuzz Challenge
- Introduction to C++
- Introduction to Machine Learning
- Introduction to programming languages
- IT Specialist Resume (CV)
J
K
M
- Machine Learning
- Machine Learning Basic Tool: NumPy
- Machine Learning Basic Tool: Pandas
- Machine Learning Mathematics
- Microcontroller and Microprocessor - what's the difference?
- ML Engineer: Who They Are, What They Do, How Much They Earn, and How to Become a Neural Network Specialist
- Monte Carlo Simulation: How It Works and What It's For
O
P
- PHP lessons
- Private DNS server and its configuration
- Programmer's Dictionary
- Programming with pseudocode
- Python Code Formatting Guide: PEP8
- Python for data analysis: how to do it and main libraries
- Python Lessons
- Python Superstar: 5 Ways to Use the * Operator
- Python vs. Julia: Should You Replace Python with Julia?
R
S
- SFML Graphics Library Tutorials
- Sorting Algorithms in Programming: Types, Descriptions, and Comparisons
- SQL commands: see what they are, what the main ones are + examples
- SQL Interview Questions and Tasks
- SQL Lessons
- SQL Stored Procedures
- SQL Syntactic Sugar: The COALESCE Function
- Stack
- Start in analytics: Python or R
- Statistical analysis: importance for decision making.
- String formatting in Python
- Swift Lessons
- switch/match construct
T
W
- What are databases, and why do they need DBMS and SQL?
- What do Linux distributions consist of?
- What is .NET and what is it used for?
- What is a GPU in a computer, in simple terms?
- What is Arduino: How it Works and the Platform's Capabilities
- What is Big Data? Introduction, Types, Characteristics, and Examples
- What is Golang and what is it used for?
- What is Haskell and what is it used for?
- What is Kotlin and what is it used for?
- What is Linux? The History of Linux
- What is machine learning, and how does it work?
- What is Power BI: everything about the data analytics software
- What is the C++ programming language?
- What is the OSI Model: A Complete Explanation of the Seven Layers and Their Role in Networking
- What's the difference between x86 and ARM processors?
- Where to start learning the C programming language?
- Which Linux distribution should you choose? A Linux distribution overview
