Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LearnOpenGL — OpenGL 完整学习路线

本工程是一套由浅到深、由易到难的 OpenGL 学习教程,覆盖从入门到进阶的核心主题。 每个章节包含:详细的理论讲解文档(README.md)完整可编译的 Demo 代码、以及一键编译运行脚本(prjBuild.sh)

一个很不错的Prj:https://github.com/JoeyDeVries/LearnOpenGL

📁 工程结构

LearnOpenGL/
├── common/                      # 公共依赖(着色器工具、摄像机、网格、模型加载等)
│   ├── glad.c                   # GLAD OpenGL函数加载器实现
│   ├── glad/glad.h              # GLAD头文件
│   ├── stb_image.h              # 图片加载库
│   ├── stb_image.cpp            # stb_image实现
│   ├── Shader.h                 # 着色器封装类
│   ├── Camera.h                 # 摄像机系统
│   ├── Mesh.h                   # 网格类
│   └── Model.h                  # 模型加载类(基于ASSIMP)
│
├── 01-Basics/                    # OpenGL基础概念与环境搭建
│   ├── 01.Environment/          # 环境搭建与OpenGL概述
│   ├── 02.Window/               # 创建GLFW窗口
│   ├── 03.Triangle/             # 绘制第一个三角形(VAO/VBO/EBO)
│   ├── 04.Shader/               # 着色器基础(GLSL/uniform)
│   ├── 05.Texture/              # 纹理映射(stb_image/多纹理)
│   ├── 06.Transform/            # 变换与坐标系统(MVP矩阵)
│   └── 07.Camera/               # 摄像机系统(WASD+鼠标)
│
├── 02-Lighting/                  # 实时光照核心原理
│   ├── 01.Color/                # 颜色模型与光照入门
│   ├── 02.BasicLighting/        # Phong光照模型
│   ├── 03.Material/             # 材质系统
│   ├── 04.LightingMap/          # 光照贴图(漫反射/镜面光/发射)
│   └── 05.MultiLight/           # 多光源场景(平行光/点光/聚光)
│
├── 03-Advanced/                  # 高级渲染技术
│   ├── 01.Blending/             # 混合与透明
│   ├── 02.FaceCulling/          # 面剔除与深度测试
│   ├── 03.Framebuffer/          # 帧缓冲与后处理
│   ├── 04.Cubemap/              # 天空盒与环境映射
│   ├── 05.Shadow/               # 阴影映射与PCF软阴影
│   └── 06.ModelLoading/         # 模型加载(ASSIMP)
│
├── 04-AdvancedTech/              # 高级OpenGL特性
│   ├── 01.Instancing/           # 实例化渲染
│   ├── 02.AntiAliasing/         # 抗锯齿技术(MSAA)
│   ├── 03.GammaCorrection/      # Gamma校正与颜色空间
│   ├── 04.StencilTest/          # 模板测试(轮廓高亮)
│   ├── 05.GeometryShader/       # 几何着色器(爆炸/法线可视化)
│   └── 06.AdvancedGL/           # 高级数据(UBO/SSBO/Transform Feedback)
│
└── Demo/                        # 原始学习Demo(参考)

🎯 学习路线

第一部分:基础入门(01-07)

学习 OpenGL 的基础概念,搭建开发环境,理解渲染管线的基本组成。

章节 主题 核心概念
01 Environment OpenGL概述、环境搭建、库介绍
02 Window GLFW窗口创建、GLAD初始化、渲染循环
03 Triangle VAO/VBO/EBO、顶点属性、绘制调用
04 Shader GLSL语法、顶点/片段着色器、uniform/attribute
05 Texture 纹理坐标、stb_image、纹理参数、多纹理
06 Transform 平移/旋转/缩放、模型/视图/投影矩阵
07 Camera 欧拉角、WASD移动、鼠标视角、Camera类

第二部分:光照渲染(08-12)

学习实时光照的核心原理,从简单颜色到完整的多光源场景。

章节 主题 核心概念
08 Color 颜色模型、顶点颜色插值、光照入门
09 BasicLighting 环境光/漫反射/镜面光(Phong模型)
10 Material 材质属性、光照与材质分离
11 LightingMap 漫反射贴图/镜面光贴图/发射贴图
12 MultiLight 平行光/点光源/聚光灯、多光源代码组织

第三部分:高级渲染(13-18)

掌握高级渲染技术,提升视觉质量和场景复杂度。

章节 主题 核心概念
13 Blending Alpha混合、片段丢弃、透明排序
14 FaceCulling 深度测试、Z-fighting、面剔除、绕序
15 Framebuffer FBO、颜色/深度/模板附件、后处理效果
16 Cubemap 天空盒、环境映射、反射与折射
17 Shadow 深度贴图、阴影渲染、PCF软阴影
18 ModelLoading ASSIMP模型加载、Mesh/Model类

第四部分:进阶技术(19-24)

深入高级 OpenGL 特性,优化渲染性能和质量。

章节 主题 核心概念
19 Instancing 实例化渲染、性能优化
20 AntiAliasing MSAA、离屏MSAA、后处理抗锯齿
21 GammaCorrection Gamma概念、sRGB、颜色空间
22 StencilTest 模板函数、轮廓高亮、地面阴影
23 GeometryShader 几何着色器、爆炸效果、法线可视化
24 AdvancedGL UBO、SSBO、Transform Feedback

🔧 环境要求

系统依赖(Ubuntu/Debian)

sudo apt-get install build-essential cmake git
sudo apt-get install libglfw3-dev libgl1-mesa-dev
sudo apt-get install libglm-dev libassimp-dev

核心库

  • GLFW 3.x — 窗口管理与输入处理
  • GLAD — OpenGL函数加载器(OpenGL 3.3 Core Profile)
  • GLM — OpenGL数学库(向量、矩阵运算)
  • stb_image — 图片加载(支持JPG/PNG/BMP等)
  • ASSIMP — 3D模型加载(FBX/OBJ/GLTF等)

🚀 编译运行

每个章节目录下都有 prjBuild.sh 脚本:

cd 01-Basics/03.Triangle
chmod +x prjBuild.sh
./prjBuild.sh

脚本会自动编译并运行当前 Demo。

📖 学习建议

  1. 按顺序学习:章节之间有前后依赖,建议从 01 开始依次学习
  2. 动手实验:修改代码参数,观察渲染效果变化
  3. 对比文档:先阅读 README.md 理解理论,再看代码实现
  4. 查阅源码common/ 目录下的工具类是理解工程化 OpenGL 的好材料

📚 参考资源

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages