1 渲染管线
- 顶点处理
- 变换,将世界坐标中的顶点投影到屏幕空间上
- 三角形处理
- 顶点间的连接关系不变,在屏幕上连接三角形
- 光栅化
- 将三角形离散成屏幕上的像素,称为片段(fragment)
- 片段处理
- 片段着色、纹理映射
- 输出帧图像
2 OpenGL流程 - 类比于画油画
- 放置模型
- 模型描述、模型变换
- Vertex buffer object(VBO)
- 一块传给GPU的buffer,存储模型的顶点、法线、纹理坐标
- 放置画架
- 视图变换
- 相机属性
- 创建framebuffer
- 视图变换
- 将画布放在画架上
- 用同一个framebuffer可以输出多个不同纹理(renderTarget)
- 一个pass里可以输出多张结果:normal、depth等
- 用户在fragment shader中决定输出纹理的样式
- 用同一个framebuffer可以输出多个不同纹理(renderTarget)
- 在画布上画画
- Vertex shader
- 对每个顶点,顶点变换、投影、插值
- fragment shader
- 对每个片段,光照、阴影、深度测试
- Vertex shader
- 可以画多次
- 之前的帧可以作为参考