很多人觉得 3D 软件和普通软件是两个物种。其实屏幕永远是二维的,所谓三维显示,只是在涂像素之前多算了几步数学。整条流水线拆开看,每一步都很朴素:1. 模型只是三角形CAD 数模导入后会被离散成三角形网格:一个顶点坐标数组,加一个每三个点连成一面的索引数组。一台机床可能就是 20 万个三角形拼成的空壳。用三角形是因为三点必共面、无歧义,GPU 硬件就是围绕画三角形设计的。2. 每帧对每个顶点做同一套矩阵乘法局部坐标 × 模型矩阵 → 世界坐标;再 × 相机矩阵 → 相机坐标;再 × 投影矩阵 → 近大远小地压成屏幕平面上的 2D 坐标,z 值保留。全程只有 4×4 矩阵乘向量,GPU 对几十万顶点并行计算,每秒重复约 60 次。3. 光栅化 深度缓冲压平后的三角形被填充成像素,按光照角度算明暗。遮挡靠深度缓冲解决:每个像素记录当前内容离相机的距离,新片元更近则覆盖,更远则丢弃。前面的立柱挡住后面的主轴,就是这么来的。由此可以推出两个反直觉的结论:▸ 拖动鼠标旋转视角时,模型的 20 万个顶点一个都没动,变的只有相机矩阵——下一帧用新矩阵重投影一遍而已。▸ 仿真里主轴下移 10mm,本质是场景图中 Z 轴节点的变换矩阵里改了一个数,刀具作为子节点自动跟随。改数字的是仿真逻辑,画出来的是渲染流水线,两件事完全解耦。对比一下:2D 图表画柱子是数据 → 比例换算 → 填矩形;3D 视口是顶点 → 矩阵换算 → 填三角形。骨架相同,三维只是把换算那一步升级成了矩阵乘法,再加一个深度缓冲。它不是另一种结构,是同一结构的加强版。而且这套流水线没人手写——矩阵运算、光栅化、深度测试由 OpenGL/Vulkan 和 GPU 硬件包办。应用代码真正做的,是维护场景图和那一堆变换矩阵。