A exploration into the world of GPU rendering using OpenGL — from the fundamentals of window creation and context management, to advanced real-time rendering techniques.
This project serves as a foundation for learning and experimenting with modern graphics programming concepts.
Over time, it may evolve into a full-fledged rendering engine, game framework, or a playground for visual experiments.
- Understand how the GPU pipeline works.
- Learn to set up and manage OpenGL contexts with GLFW.
- Use GLAD to load modern OpenGL functions.
- Explore the essentials of shaders, textures, buffers, and framebuffers.
- Build toward real-time rendering features such as:
- Lighting & materials
- Post-processing effects
- Physically based rendering (PBR)
- Scene management
- Deferred rendering
- GPU compute techniques
GPU-Renderer/
├─ include/ # Header files (GLAD, GLFW, etc.)
├─ lib/ # Linked libraries
├─ src/ # Source code (main.cpp, glad.c, etc.)
├─ run/ # Build & run environment (build scripts, README, executables)
├─ .vscode/ # VS Code tasks and launch configurations
└─ README.md # Project overview (this file)
- Language: C++17
- Graphics API: OpenGL 3.3 Core Profile
- Libraries:
- Tools:
- MinGW / MSYS2 toolchain
- Visual Studio Code (for development & debugging)
Setup and Run - Setup Docs
- Initialization
- Setting up OpenGL, GLFW, and GLAD
- Understanding the rendering loop
- Drawing Basics
- Buffers (VBO, VAO, EBO)
- Simple shaders
- Triangle rendering
- Lighting & Materials
- Ambient, diffuse, and specular lighting
- Normal mapping and Phong shading
- Textures & Models
- Texture mapping and image loading
- OBJ/GLTF model rendering
- Advanced Rendering
- Framebuffers and post-processing
- Shadow mapping
- Environment maps
- Deferred rendering
- Beyond Rasterization
- Compute shaders
- GPU particles
- Real-time global illumination experiments
This repository is designed to grow organically — from a minimal OpenGL setup into a modular renderer capable of powering small games, visualizers, or GPU-based simulations.
The goal isn’t just to render graphics, but to understand every layer of the process — how data flows from CPU to GPU, how shaders transform geometry, and how real-time graphics engines are built from the ground up.
- ✅ Window creation with GLFW
- ✅ OpenGL context initialization via GLAD
- ⏳ Next step: rendering primitives and learning about VAOs/VBOs
- OpenGL SuperBible
- LearnOpenGL.com
- The Cherno’s “Game Engine” series
- Real-Time Rendering (4th Edition)
This is an educational and experimental project — contributions, discussions, and suggestions for learning resources are always welcome.
This project is open-source and free for learning, modification, and experimentation.
"The best way to learn graphics programming is to build your own renderer, one line of code at a time."