DongGu
图形学入门--系列开篇

图形学入门--系列开篇

挖个新坑

建了博客就想把所有学的东西记录下来。

这学期学了一些图形学基础知识,想整理下来,不知道能不能坚持下来。

这个人又开始画三角形了


学习路线

本系列主要参考 GAMES101(现代计算机图形学入门) 课程体系,同时补充学校课程中讲得不够深入的部分。整体分为五个阶段,从 2D 光栅化一路写到光线追踪。

一、光栅化基础(2D)

从”如何在屏幕上画一个像素”开始,建立连续数学到离散像素的思维转换。

  • 直线光栅化:DDA、Bresenham 中点划线、八分象限推广
  • 圆与椭圆的绘制:中点画圆法、八分对称、增量递推
  • 多边形填充:x-扫描线算法、有效边表(AET)、边界填充与洪水填充、扫描线种子填充
  • 二维几何变换:齐次坐标、平移/旋转/缩放/反射/错切矩阵、仿射变换的性质
  • 线段裁剪:Cohen-Sutherland 编码裁剪、Liang-Barsky 参数化裁剪
  • 多边形裁剪:Sutherland-Hodgman 逐边裁剪

二、三维管线

从 2D 进入 3D,掌握模型坐标系到屏幕坐标系的完整变换链。

  • 三维几何变换:4×4 齐次矩阵、三维旋转(欧拉角/罗德里格斯旋转变换)
  • 观察变换:摄像机坐标系(LookAt 矩阵)、Model → World → Camera 变换管线
  • 投影变换:正交投影 vs 透视投影、视景体(frustum)、透视除法、NDC
  • 三角形光栅化:屏幕空间映射、重心坐标插值、逐像素属性插值
  • 可见面判断:Z-Buffer(深度缓冲)、画家算法

三、着色与纹理

让 3D 画面看起来接近真实。

  • 光照模型:Phong 反射模型(环境光 + 漫反射 + 镜面高光)、Blinn-Phong 优化
  • 着色方式:Flat Shading → Gouraud Shading → Phong Shading 的原理与对比
  • 纹理映射:UV 坐标、重心坐标插值、双线性插值与最近邻采样、Mipmap、透视校正

四、几何处理

从离散的三角形网格延伸到光滑的参数曲面。

  • 贝塞尔曲线:伯恩斯坦多项式、de Casteljau 递推、几何连续性
  • B 样条与 NURBS:节点向量、基函数、B 样条曲面
  • 网格处理:网格细分(Loop、Catmull-Clark)、网格简化(边坍缩)

五、光线追踪

从光栅化(速度换质量)转向光线追踪(质量换速度),理解物理上正确的渲染。

  • Whitted 光线追踪:光线与几何体求交(球、三角面片)、递归反射与折射、阴影光线
  • 加速结构:包围盒层次结构(BVH)、SAH 启发式构建、均匀空间划分
  • 路径追踪:渲染方程、蒙特卡洛积分、重要性采样、全局光照

配套项目

系列文章会配套一个基于 SDL + 纯 CPU 的软渲染器,不依赖 OpenGL/DirectX。

  • 从 2D 画线画圆开始,逐步加入 3D MVP 管线、光栅化、着色、纹理
  • 所有渲染逻辑从零手写,保持代码短小、易于在博客中展示

路线只是方向,顺序和范围可能会在写作过程中调整。

本文作者:DongGu
本文链接:https://donggu.xyz/2026/05/10/图形学入门/图形学入门-系列开篇/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可