OpenGL中渲染管线的理解(1)

OpenGL渲染管线

第一次写OpenGL方面的内容,如果有误请在评论区指正,我会及时修改

首先贴上一个非常好的教程 https://learnopengl-cn.github.io

建议先看这个教程中的“你好,三角形”部分,如果有不明白的地方在来看我的梳理

7月份前就看过渲染管线的部分,当时理解的还比较模糊,现在对这一部分做一个自己的总结

我理解的渲染管线流程:顶点:位置 -> 图元:几何 -> 片元(或者叫片段):颜色

一点一点来讲这个图

  • 顶点数据由顶点属性决定,顶点属性(一般包含位置信息,可能还有颜色信息等,可以看成一个类)

第一部分:顶点着色器接收输入的顶点数据

第二部分:图元装配接收顶点着色器输出的顶点数据,并将所有的点装配为指定图元的形状(点、线段、三角形等)

第三部分:几何着色器(可选),对图元进行处理,输出仍为图元

  • 过程补充
  1. 窗口外侧图元部分被适当裁剪并补充对应的点和边,例如多边形在窗口外侧裁剪后还需要增加新的顶点和边
  2. 转换到窗口坐标,之前的坐标是规格化设备坐标,而这里需要根据窗口的大小将进行坐标转换

第四部分:光栅化,这里将图元与窗口坐标一一映射,生成片元(或者叫片段)

  • 补充部分
  • 片元(片段):一个片元中含有一个像素所需要的所有数据,颜色,深度,纹理信息等

第五部分:片段着色器根据在光栅化阶段生成的片元,根据3D场景数据(光照、阴影、光的颜色等)以及其它信息来计算像素最终的颜色

第六部分:Alpha测试和混合,这里主要是根据片元中存放的深度以及透明度等信息来对像素的颜色做一个最终的混合与确定

此时屏幕上的像素位置已经与颜色一一对应完成

猜你喜欢

转载自blog.csdn.net/qq_29639589/article/details/83583773