OpenGL渲染管线

顶点着色→细分着色→几何着色→图元装配→剪切→光栅化→片元着色→逐片元着色

顶点着色器

顶点着色:加工处理顶点数据。顶点着色器的必须完成的任务是将顶点从模型空间转换到齐次裁剪空间。

细分着色:将顶点着色器处理的顶点数据再加工,使模型外观更为平滑,属于精雕细琢的环节。

几何着色(顶点变换):对之前的每个几何图元做更进一步的处理。几何着色器是可选的完全可编程的阶段,主要对图元(点、线、三角形)的顶点进行操作。几何着色器接收顶点着色器的输出作为输入,通过高效的几何运算,将数据输出,数据随后经过几何阶段和光栅化阶段的其他处理后,会发送给片段着色器。

图元装配(面处理):将顶点和几何图元装拼起来,将顶点连接在一起,组成线、面单元。准备下一步剪切和光栅化的操作。

剪切:是自动进行的部分,将窗口外不需要绘制的的像素剪切掉。

光栅化:光栅化是一个决定哪些像素被几何图元覆盖的过程。读取模型的顶点,三个三个的读,构造三角形。计算窗口内的三角形并且上色。窗口外的三角形不上色。主流判断是否在窗口内的算法:LEE和Scan Line。

关于光栅化的具体解释移步https://blog.csdn.net/qq_43461641/article/details/99078476

片元着色器

片元着色器:会在渲染图元内部进行线性插值,最后输出成像素着色。计算片元的最终颜色和深度值。用到纹理映射技术(是一种将图形绘制到表面的技术,可以显著的增加所绘制场景的细节和真实感)。纹理实际上是一个二维数组,纹理映射就是通过算法来将二维数组转换成图像呈现到屏幕上。最后一道工序,会使用深度测试和模板测试来决定一个片元是否可见。如果一个片元成功通过了所有的测试,就可以直接被绘制到帧缓存中。

补充:

模板测试:在深度测试之前进行,使用的是模板缓冲。模板缓冲可以描绘物体轮廓。接着利用模板缓冲中的值决定是丢弃还是保留后续绘图中的片元。
深度缓存:深度缓存是一个只含有特定像素的深度信息而不含有图像数据的表面。深度缓存为最终绘制图像中的每一个像素都保留了一个深度项。所以,当所绘制的图像的分辨率为640x480时,深度缓存中将有640x480个深度项。
深度测试:深度测试的基本内容是依据深度值让处于同一位置的不同像素进行竞争,以选出应写入该位置的像素。距离摄像机最近的像素获胜,并被写入深度缓存的相应位置上。这样做是合理的,应为距离摄像机最近的像素一定会将位于其后方的像素遮挡。深度缓存的格式决定了深度测试的精度。即,24位的深度缓存要比16位的深度缓存精确得多。
深度冲突:如果两个平面非常接近的排列在一起会发生深度冲突。
解决办法:使用更高位数(精度)的深度缓冲。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值