很多开发者的技术栈里都卡在一个尴尬的位置:能用 OpenGL 写出画面,但一旦项目变大,代码就彻底失控。这类痛点通常不是语言不熟,而是缺乏工程化的架构思维。这门课程直接针对“会绘图但不会造引擎”的群体,核心目标不是教你更多图形学算法,而是教你如何用 C++ 的面向对象思想,把散落的渲染代码封装成可复用、可扩展的底层框架。它适合那些代码基础扎实、熟练掌握 C++ 内存管理,但从未独立设计过模块划分、资源生命周期管理以及渲染管线数据流的中级开发者。对于长期停留在“调用 API 出图”阶段,希望突破薪资瓶颈或提升作品含金量的同学,这是一块必须补上的短板。

建议优先消化的核心模块

不要一上来就死磕复杂的场景构建,建议将学习精力集中在前中段的架构设计与基础类实现上。首先,重点攻克“对象抽象”章节,理解如何将 Mesh、Material、Shader 这三个核心要素从硬编码的渲染循环中剥离出来,形成解耦的类结构。其次,深入研读“资源管理”部分,搞清楚纹理和缓冲对象(VBO/VAO)的生命周期是如何被统一管控的,这直接关系到引擎在大型项目中的稳定性。最后,务必动手复现“渲染管线封装”逻辑,观察光源、相机与物体之间的数据是如何通过统一的接口流转到 GPU 的。这几个部分构成了引擎的骨架,只有骨架立住了,后续添加光照模型或特效才不会牵一发而动全身。

学完能独立实现什么

完成课程并独立复现案例后,你将具备从零搭建一个简易但完整的渲染引擎的能力。具体来说,你不再依赖外部图形库,而是能亲手写出一个支持多光源、多材质、可编辑网格加载的渲染核心。你能够清晰地向面试官解释:为什么要在渲染器中引入虚拟对象概念?如何处理不同 shader 之间的状态冲突?如何设计资源加载器以避免重复创建 GPU 对象?更重要的是,你将拥有一个可以直接放进 GitHub 的开源项目雏形,证明你具备架构设计能力,而不仅仅是绘图能力。

资料配合练习策略

不要把资料包当成视频课的补充,而要当成“调试现场”。在编写代码时,遇到状态切换混乱或内存泄漏,先对照资料包中的架构设计文档,检查类职责是否单一。建议采取“黑盒测试”法:先运行完课程提供的示例程序,观察渲染结果,然后故意修改参数(如光源位置、法线方向),验证引擎的响应是否符合物理规律。遇到报错,不要只复制粘贴错误信息,而要结合 C++ 的调试工具,追踪到引擎内部的具体类成员,理解数据在哪个环节断裂。这种“带着问题看代码,用架构视角修 bug”的过程,比单纯抄写代码更能固化知识。最终,你要能回答“如果我要在这个引擎里加一个后期特效,应该插入在哪个阶段?需要新增哪些类?”这类架构级问题,才算真正掌握了本课程的精髓。

课程介绍

适合人群: 熟练掌握OpenGL但是没有做过渲染引擎的同学 期望获得更高薪水,作品较少的同学 对C++熟练掌握,但没设计过架构的同学 需要加强职场技术能力的同学 你将会学到: 如何使用OpenGL从0开始,实现一个图形渲染引擎

课程目录

QQ_1754989442468.png   2025-8-12 17:04 上传 课程介绍: 适合人群: 熟练掌握OpenGL但是没有做过渲染引擎的同学 期望获得更高薪水,作品较少的同学 对C++熟练掌握,但没设计过架构的同学 需要加强职场技术能力的同学 你将会学到: 如何使用OpenGL从0开始,实现一个图形渲染引擎 课程目录:
第1章导学(6分钟3节) 1-1渲染引擎导学[06:36]
第2章渲染知识回顾(2小时38分钟7节) 2-1顶点与几何[24:20] 2-2矩阵与变换回顾[28:25] 2-3纹理复习[25:17] 2-4shader复习[16:33] 2-5material复习[19:39] 2-6光照复习[22:29] 2-7动画复习[21:42]
第3章渲染引擎案例及概览(2小时9分钟8节) 3-1引擎Cmake组织架构[14:37] 3-2triangle案例讲解[19:42] 3-3cube案例讲解[11:56] 3-4materials案例讲解[11:35] 3-5modelLoading案例讲解[16:57] 3-6animation案例[18:52] 3-7引擎架构概览[22:44] 3-8引擎代码概览[13:31]
第4章引擎核心层设计(2小时33分钟9节) 4-1智能指针详解[27:24] 4-2Attribute类数据详解[17:43] 4-3Attribute类接口详解[12:01] 4-4geometry类详解[14:01] 4-5包围球与包围盒[20:05] 4-6Object3D成员参数详解[14:05] 4-7Object3D类型与节点体系[09:27] 4-8Object3D下的矩阵变换[22:14] 4-9Object3DLookAt函数[16:53]
第5章 引擎FrontEnd设计 (2小时43分钟 8节) 5-1material详解[14:02] 5-2camera详解[14:55] 5-3cameralControl详解[28:35] 5-4texture基类详解[16:39] 5-5texture的读取详解[20:19] 5-6sourceCache详解[15:48] 5-7eventDispatcher详解[42:32] 5-8FrontEnd其他类[10:23]
第6章 渲染器基础模块 (2小时48分钟 10节) 6-1DriverWindow窗体初始化[21:07] 6-2DriverWindow尺寸变化回调[11:51] 6-3DriverWindow鼠标事件回调[11:52] 6-4DriverWindow键盘响应[13:16] 6-5渲染流程分析[17:19] 6-6渲染列表构建[26:20] 6-7渲染列表排序[19:21] 6-8视锥体剪裁算法(一)[14:15] 6-9视锥体剪裁算法(二)[16:38] 6-10视锥体剪裁代码详解[16:24]
第7章 引擎顶点属性系统 (2小时28分钟 9节) 7-1渲染场景解析流程[16:26] 7-2VBO 解析架构理论[11:34] 7-3DriverAttributes解析[18:19] 7-4DriverGeometries解析[11:25] 7-5DriverObjects详解[10:43] 7-6VBO与VAO回顾[20:41] 7-7绑定流程前[10:24] 7-8顶点绑定详解(一)[24:30] 7-9顶点绑定详解(二)[24:21]
第8章 Shader管理系统 (3小时14分钟 10节) 8-1Shader管理介绍[27:30] 8-2DriverProgram详解[11:53] 8-3DriverProgramShader处理[20:30] 8-4program创建与参数创建[14:59] 8-5DriverPrograms接口函数[08:19] 8-6DriverMaterials解析[18:05] 8-7Program设置流程[26:55] 8-8Program更新生成流程[13:36] 8-9ShaderChunk完整解析[35:41] 8-10总结与回顾[17:07]
第9章 Uniform系统设计 (2小时53分钟 7节) 9-1Uniform概念与分类[18:22] 9-2Uniform相关接口[32:04] 9-3Uniform系统基础编写思想[14:57] 9-4简单Uniform详解[23:32] 9-5StructuredUniform详解[19:08] 9-6Uniform更新方案设计[26:22] 9-7Uniform设计最终方案[38:50]
第10章 Uniform系统解析 (3小时11分钟 10节) 10-1StructuredUniform外部组织代码[15:34] 10-2PureArrayUniform外部组织代码[16:03] 10-3Uniforms系统总结与外部系统[18:37] 10-4UniformsLib介绍[15:43] 10-5Uniforms更新主逻辑[20:20] 10-6正则表达式案例[19:44] 10-7UniformName的匹配[31:48] 10-8Uniform匹配实现[18:31] 10-9Uniforms系统总结回顾[12:59] 10-10管线设置与绘制[22:38]
第11章 纹理系统解析 (2小时23分钟 9节) 11-1纹理系统技术回顾[12:57] 11-2DriverTextures详解[17:52] 11-3TextureUnit分配功能[17:53] 11-4纹理更新过程[27:44] 11-5CubeMap回顾及FrontEnd[17:06] 11-6DriverBackground解析流程[17:45] 11-7CubeMap的Shader系统[11:26] 11-8CubeMap的Uniform更新[09:43] 11-9纹理系统总结[11:23]
第12章 RenderTarget系统解析 (52分钟 4节) 12-1RenderTarget系统前端[20:30] 12-2RenderTarget实例演示[07:04] 12-3DriverRenderTargets详解[08:31] 12-4RenderTarget的解析[16:24]
第13章 光照系统解析 (1小时54分钟 7节) 13-1光照系统梗概[10:33] 13-2MeshPhongShader解析(一)[32:13] 13-3MeshPhongShader解析(二)[12:38] 13-4光照缓存流程[07:17] 13-5光照系统Uniform设计[14:03] 13-6DriverLights类解析[15:14] 13-7光照系统Uniform建设与更新[22:40]
第14章 阴影系统解析 (2小时4分钟 8节) 14-1阴影技术回顾[14:22] 14-2阴影系统FrontEnd[16:32] 14-3DepthShader解析[09:07] 14-4阴影Shader解析[36:35] 14-5阴影系统Uniform设计[11:52] 14-6Shadow 信息更新[08:53] 14-7DriverShadowMap解析[20:46] 14-8阴影参数实验[06:44]
第15章 模型读取 (1小时13分钟 5节) 15-1模型读取技术系解析[13:01] 15-2模型材质读取[18:44] 15-3节点的解析[12:38] 15-4Mesh的读取与构建[11:52] 15-5uv读取解析[16:47]
第16章 骨骼系统 (2小时5分钟 9节) 16-1插值系统回顾[11:24] 16-2Interpolant类讲解[23:55] 16-3Interpolant不同插值讲解[12:58] 16-4骨骼系统架构(一)[12:22] 16-5骨骼系统架构(二)[08:19] 16-6骨骼动画的Shader[11:21] 16-7骨骼动画类架构解析[15:12] 16-8骨骼数据读取[21:35] 16-9骨骼动画架构总结[08:27]
第17章 动画系统 (1小时22分钟 6节) 17-1动画系统架构解析[17:41] 17-2动画系统类概览[16:13] 17-3动画关键帧读取[13:57] 17-4AnimationAction构造[07:44] 17-5PropertyBinding解析[16:29] 17-6动画系统整体流程