OpenGL实例教程08:插值
为什么需要插值?
回想一下我们绘制的三角形,只提供了三个顶点的数据。考虑下面这个问题:如何通过三个顶点的数据绘制三角形内所有的像素?如果三个顶点颜色不同,如何确定顶点的颜色?答案就是查找。栅格化器会对来自顶点着色器的变量执行的插值(相邻像素产生差别)。

渲染管线中的流程:
gl_Position 是一个包含顶点齐次坐标的4向量。该向量的XYZ分量将除以W分量。
任何超出[-1,1]的分量都被剪切。
结果将被转换为屏幕坐标。
然后被光栅化器渲染到屏幕上。
光栅化器在图形顶点之间插值(位置、颜色、法线)
执行片段着色器“访问”图形内的每个像素。
如果使用纹理呢?为了用纹理“覆盖”图形,需要为每个像素执行采样操作,为此需要提供像素对于的纹理坐标。这些坐标是插值的结果。
代码展示:
顶点着色器:
其中的clamp函数的作用是,将第一个参数的值限制在第二个和第三个参数值之间。
片段着色器: