FCT
载入中...
搜索中...
未找到
一个3D物体是怎么被画出来的

当你在屏幕上看到一个3D物体时,它实际上经历了一个复杂的渲染过程。这个过程将3D空间中的几何数据转换为屏幕上的2D像素。

渲染管线流程

一个3D物体从数据到屏幕显示,需要经过以下几个主要阶段:

dot_inline_dotgraph_2.png

详细流程

详细流程

1. 加载3D模型

3D物体首先以数字形式存在,一般包含:

  • 顶点坐标(位置信息)
  • 顶点属性(颜色、法线、纹理坐标等)
  • 索引信息(定义哪些顶点组成三角形)

2. 变换到屏幕坐标

3D图形经过矩阵运算,转换成为2D屏幕上的坐标。

通常发生在顶点着色器

变换详见3D渲染下的各种变换

顶点着色器同时还会处理其他顶点属性(颜色、法线、纹理坐标等)

3. 图元装配与裁剪

  • 将变换后的顶点组装成基本图形(通常是三角形)
  • 裁剪处理:将屏幕外看不到的三角形移除,将能看到一部分的三角形切割,只保留可见部分

4. 视口变换

将标准化设备坐标(NDC)转换为屏幕像素坐标:

  • X、Y坐标:从[-1,1]映射到实际屏幕像素范围(如0-1919, 0-1079)
  • Z坐标:从[-1,1]映射到深度缓冲区范围(通常是[0,1])

5. 光栅化

确定每个三角形覆盖屏幕上的哪些像素, 并为每个像素计算插值后的顶点属性(如颜色、纹理坐标、法线等)

6. 计算颜色

像素着色器为每个像素计算最终结果:

  • 应用材质和纹理
  • 计算光照效果
  • 处理透明度等特效

7. 深度测试

通过比较像素的深度值,确定哪些像素应该被显示(前面的物体遮挡后面的物体

8. 混合

处理透明物体的颜色混合

9. 输出

最终的像素颜色被写入帧缓冲区,显示在屏幕上

关键概念

  • 顶点:3D物体的基本构成单元,包含位置和属性信息
  • 三角形:现代图形硬件的基本渲染单元
  • 变换矩阵:用于坐标转换的数学工具
  • 着色器:在GPU上运行的小程序,处理顶点和像素

相关文档