{"id":18435875,"url":"https://github.com/parallel101/opengltutor","last_synced_at":"2025-04-05T14:09:45.614Z","repository":{"id":176406585,"uuid":"657276513","full_name":"parallel101/opengltutor","owner":"parallel101","description":"零基础入门计算机图形学必不可少的在线网络公开课，手把手教您现代 OpenGL 的点点滴滴，构建爆款游戏引擎。","archived":false,"fork":false,"pushed_at":"2024-08-08T01:49:05.000Z","size":3408,"stargazers_count":332,"open_issues_count":33,"forks_count":116,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-29T13:11:39.508Z","etag":null,"topics":["3d","game-engine","glsl","graphics","opengl","opengl-tutorial","opengl3","realtime-rendering","rendering","shaders","tutorial","webinar"],"latest_commit_sha":null,"homepage":"https://space.bilibili.com/263032155/channel/collectiondetail?sid=53025","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parallel101.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-22T17:48:17.000Z","updated_at":"2025-03-28T13:54:30.000Z","dependencies_parsed_at":"2023-12-27T09:24:04.524Z","dependency_job_id":"8298cf59-4a6b-4c6c-9438-8f7495e3aa72","html_url":"https://github.com/parallel101/opengltutor","commit_stats":null,"previous_names":["parallel101/opengltutor"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallel101%2Fopengltutor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallel101%2Fopengltutor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallel101%2Fopengltutor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallel101%2Fopengltutor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parallel101","download_url":"https://codeload.github.com/parallel101/opengltutor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247345856,"owners_count":20924102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","game-engine","glsl","graphics","opengl","opengl-tutorial","opengl3","realtime-rendering","rendering","shaders","tutorial","webinar"],"created_at":"2024-11-06T06:09:33.852Z","updated_at":"2025-04-05T14:09:45.586Z","avatar_url":"https://github.com/parallel101.png","language":"C","readme":"# 现代 OpenGL 保姆级教程\n\n零基础入门计算机图形学必不可少的在线网络公开课，手把手教您现代 OpenGL 的点点滴滴，构建爆款游戏引擎。\n\n本仓库仅仅包含实验源码，课件下载请前往：https://github.com/parallel101/openglslides\n\n国内镜像下载：https://gitee.com/archibate/opengltutor\n\n\u003e 本分支为最新一课（第三课）的作业项目源码，[要做第一课作业的同学请点击这里跳转到 hw01 分支](https://github.com/parallel101/opengltutor/tree/hw01)。提交 PR 时，请在标题中写明是第几课的作业，对于第一课的作业，则应该将目标分支设为 hw01。\n\n## 课程简介\n\n你是否想要掌握计算机图形学的核心原理和技术？你是否想要利用现代OpenGL创建自己的3D游戏引擎？但又苦于没有简单易懂适合入门的中文教程？如果是，那么这门课程就是为你量身定制的！ 在这门课程中，你将从基础知识开始，逐步深入探索图形渲染管线的各个阶段，学习如何使用OpenGL和GLSL进行高效的图形编程，实现各种真实感效果，如光照、纹理、阴影等。你还将动手搭建一个完整的3D游戏引擎框架，体验从模型导入、场景管理、相机控制到碰撞检测、动画系统等各个方面的设计和实现。通过这门课程，你将获得丰富的图形学理论和实践知识，为你未来的图形学创作和研究打下坚实的基础。 这门网络公开课每周六2点开始直播，每次约1小时，共15课，错过了也不要紧，每一期的录播都会上传到B站免费观看。\n\n目标：打造一款基于 OpenGL 的 3D 游戏引擎，开发出爆款开源游戏。\n\n面向人群：有一定编程基础，学过 C 语言，想要入门计算机图形学，OpenGL 的初学者。\n\n能学到的东西：现代 OpenGL API 的使用，线性代数与矢量微积分，图形管线的原理，GLSL 着色器语言，迪士尼 BRDF、TAA、IBL、全局光照等现代渲染技术，游戏引擎的 ECS 架构，现代 C++ 设计模式，软件工程最佳实践，软件跨平台，部署与发布，多线程性能优化等。\n\n直播间：https://live.bilibili.com/14248205\n\n课程录播：https://space.bilibili.com/263032155/channel/collectiondetail?sid=53025\n\n## 课程大纲\n\n1. 从配置安装到画第一个三角形（BV1Na4y1c7tP）\n2. 重学线性代数矢量与矩阵（BV1ej411U7SW）\n3. 三维模型的加载与相机控制 (录播文件丢失，正在重置中)\n4. GLSL 着色器语言与 PBR 光照模型\n5. UV、法线与材质贴图的加载和使用\n6. 离屏渲染与点选物体的实现\n7. 高质量实时软阴影的实现\n8. 环境光贴图与 IBL 烘培\n9. 色调映射、延迟渲染、Blooming 与 TAA\n10. 屏幕空间反射与 SDF 全局光照\n11. 几何着色器：实例化与曲面细分\n12. 骨骼动画与蒙皮：角色走路动画的实现\n13. 地型的程序化生成与天空体积云的渲染\n14. 用计算着色器做实时物理仿真\n15. 游戏引擎 ECS 架构的设计与实现\n\n## 课程参考资源\n\n- Learn OpenGL 网站（非常适合初学者）：learnopengl.com\n- 红宝书：《OpenGL Programming Guide》或称《OpenGL编程指南》\n- 蓝宝书：《OpenGL Superbible: Comprehensive Tutorial and Reference》\n- 着色器：《OpenGL 4.0 Shading Language Cookbook》\n- GPU Gems 系列：https://developer.nvidia.com/gpugems/gpugems3/foreword\n- OpenGL 官方主页：http://www.opengl.org/\n- Khronos（OpenGL 的维护团队）主页：http://www.khronos.org/\n- GAMES104（小彭老师所对标的课程）：https://games104.boomingtech.com\n- 《游戏引擎架构》：https://book.douban.com/subject/25815142\n- 小彭老师课程群（不上课的同学不要加）：458712187\n\n## 硬件要求\n\n流畅运行所需最低配置：\n- 显卡：Intel 或 AMD 集成显卡，支持 OpenGL 4.3\n- 处理器：2 GHz 以上处理器，64 位\n- 内存：4 GB\n- 硬盘：20 GB 空闲空间\n\n小彭老师同款配置：\n- 显卡：NVIDIA GeForce RTX 2080（或 AMD Radeon RX 5700 XT）独立显卡\n- 处理器：Intel Core i7-9750H（或 AMD Ryzen 7 4800H）\n- 内存：32 GB（DDR4）\n- 硬盘：1 TB\n\n## 软件要求\n\n编译源码所需软件：\n- 操作系统：Windows \u003e= 10 或 Ubuntu \u003e= 20.04 或 MSYS2 或 WSL2（需要安装 WSLg）\n- 编译器：MSVC \u003e= 19 或 GCC \u003e= 9 或 Clang \u003e= 11（支持 C++17 即可）\n- 编辑器：Visual Studio 2019、2022 或 VS Code 等任意你用得惯的编辑器\n- 构建系统：CMake \u003e= 3.10\n\n小彭老师所用软件：\n- 操作系统：Arch Linux\n- 编译器：GCC 12.2.1\n- 编辑器：NeoVim 0.9.1\n- 构建系统：CMake 3.26\n\n## Windows 开发环境搭建\n\n网盘分享链接：https://pan.baidu.com/s/1TZ6nVJC7DZIuUarZrGJYow\n提取码：opgl\n\n内含：\n\n1. VS2022（自带了 CMake 和 Git）\n1. DX 运行时（包含 OpenGL）\n1. OpenGL 软光栅（你没有显卡时才需要下载）\n1. CPU-Z 配置检测工具（可查看显卡和处理器型号）\n\n\u003e 仅供方便，不一定非用网盘里的文件不可，也可以从网上搜索其他资源下载，也可以选择其他 IDE。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparallel101%2Fopengltutor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparallel101%2Fopengltutor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparallel101%2Fopengltutor/lists"}