这门课的名字里带着"系列之6",所以先说清楚它的位置:它属于一条从 Windows 原生编程一路走下来的线路。前面几节多半在讲窗口、消息循环、GDI 绘图这些底层的东西,到了这一节,正式切进 Direct3D。如果你手上已经有一套 C++ 基础,能看懂类、指针和简单的模板,并且知道 Win32 程序大致长什么样,这门课接得上。如果你是从 Unity、Godot 这类引擎转过来,想搞清楚"引擎底下到底发生了什么",它也有价值——但要有心理准备,前期会花不少时间在环境配置和窗口代码上。

它解决的是哪个工作场景

最直接对应的场景是:你想用 C++ 在 Windows 上自己做点三维的东西,但卡在两个地方。一是环境搭不起来,链接库找不到、头文件路径配错、debug 和 release 跑出来结果不一样;二是就算窗口跑起来了,屏幕上也只是一片纯色,不知道怎么把顶点、纹理、光照这些东西一步步变成看得见的画面。

这门课从创建窗口、处理消息开始,一直讲到用 D3D 渲染出带纹理、带光照、能做变换的三维动画。也就是说,它把"能跑起来"和"能看到东西"之间那段最劝退的路给铺上了。学完之后,你至少能独立写出一个可交互的三维演示程序:摄像机可以动,模型能旋转缩放,贴图正常,有基本的光照,键盘鼠标能控制。

内容的具体走向

课程不是一上来就丢 D3D 的 API,而是先处理窗口和消息,顺带把 GDI 编程讲了。这一段对老手是复习,对新手很关键——因为后面 D3D 的设备初始化、渲染循环,都建立在这套消息机制上。跳过它,后面会一直有"这段代码为什么写在这儿"的疑问。

进入 D3D 主体之后,重点落在几块:顶点缓存和索引缓存怎么组织几何数据,世界、视图、投影、裁剪这四大变换各自管什么,光照和材质怎么配合,纹理怎么贴上去,Alpha 混合和深度测试(Z 缓存)怎么处理遮挡和透明。这几块是三维渲染的骨架,理解透了,换到别的图形 API 上也能迁移。

最后是 DirectInput 的鼠标键盘处理,以及三维粒子系统的原理。粒子系统那一节更像是一个综合练习,把前面的顶点、纹理、混合、变换串起来用。

资料适合什么基础的人

适合:有 C++ 语法基础、写过控制台程序、知道 Windows 程序大致结构的人。也适合学过图形学理论、但没真正上手写过 D3D 代码的人。

不太适合:完全没碰过 C++,或者只写过 Java、Python 的人。这不是那种"跟着敲就能懂"的课,很多地方需要你自己去查文档、调参数、盯着黑屏找问题。三维编程的调试本来就枯燥,这门课不会把这件事变轻松。

怎么用这套资料

建议按顺序走,不要跳。窗口和消息那部分看着基础,但它是后面所有代码的地基。顶点缓存、索引缓存、四大变换这几节,建议每节都自己动手改改参数,比如把投影矩阵换个角度、把立方体顶点顺序打乱,看画面怎么变——这种"故意弄坏再修好"的过程,比单纯看讲解有用得多。

光照、纹理、混合、深度测试这几块彼此关联,建议放在一起学,边学边在同一个场景里叠加效果。粒子系统放到最后,当作一次独立练习,尽量不看参考代码自己写一遍。

另外提醒一点:D3D 的老版本 API 和现在主流的 DirectX 12、Vulkan 在思路上有差异,但顶点、变换、光照、纹理这些基本概念是通的。抱着"学原理"的心态来,比抱着"学一门马上能找工作的技术"的心态来,收获会更大。

课程目录

课程目录46 集
  • 01 D3D开发环境的搭建与配置 01 D3D从零开发章节概览及内容介绍.mp4
  • 02 DirectX开发包的安装.mp4
  • 03 DirectX开发引言.mp4
  • 04 Com及OpenGL简介.mp4
  • 02 Windows窗口与消息 01 Windows窗口及消息简介.mp4
  • 02 VS2015创建Win32应用程序及框架介绍.mp4
  • 03 注册窗口类及创建窗口.mp4
  • 04 消息机制及消息从哪里来.mp4
  • 05 消息机制及消息到哪里去.mp4
  • 06 Windows窗口从诞生到消亡.mp4
  • 03 GDI编程基础 01 GDI的通用编程框架.mp4
  • 02 GDI绘制几何图形.mp4
  • 03 GDI绘制文本.mp4
  • 04 GDI绘制位图.mp4
  • 05 GDI绘制图形的小结.mp4
  • 04 D3D编程基础 01 D3D的通用编程框架.mp4
  • 02 D3D的初始化四步曲.mp4
  • 03 D3D的交换链及设备接口.mp4
  • 04 D3D的初始化代码练习.mp4
  • 05 D3D渲染五步曲及代码练习.mp4
  • 06 D3D基础及渲染小结.mp4
  • 05 D3D的顶点缓存与索引缓存 01 顶点缓存及应用四步曲架.mp4
  • 02 顶点缓存绘制三角形.mp4
  • 03 索引缓存原理详解.mp4
  • 04 索引缓存绘制八边形.mp4
  • 06 D3D三维世界之四大变换 01 三维世界之四大变换.mp4
  • 02 四大变换的函数封装.mp4
  • 03 使用四大变换绘制旋转的立方体.mp4
  • 07 D3D三维世界之光照与材质 01 光照与材质简介.mp4
  • 02 D3D绘制内置几何体.mp4
  • 03 光照与材质的数据结构及API.mp4
  • 04 光照代码及应用.mp4
  • 05 光照与材质的小结.mp4
  • 08 DirectInput鼠标与键盘 01 DirectInput处理鼠标和键盘.mp4
  • 02 鼠标和键盘操作五步曲.mp4
  • 03 鼠标和键盘代码集成到项目中.mp4
  • 09 D3D编程之纹理映射 01 纹理映射及四步曲操作.mp4
  • 02 纹理映射的代码实现.mp4
  • 10 D3D编程之Alpha混合技术 01 Alpha透明混合及网格模型.mp4
  • 02 Alpha应用三步曲及代码实现.mp4
  • 11 D3D编程之深度测试与Z缓存 01 D3D编程之深度测试与Z缓存.mp4
  • 02 D3D深度测试四步曲及代码实现.mp4
  • 12 D3D编程之三维粒子系统 01 三维粒子系统简介.mp4
  • 02 三维粒子系统代码解析.mp4
  • 03 雪花飞扬代码实现之初始化.mp4
  • 04 雪花飞扬代码实现之更新和渲染.mp4