欢迎光临散文网 会员登陆 & 注册

OpenGL实例教程08:插值

2023-03-09 09:36 作者:阿西拜-江西  | 我要投稿

为什么需要插值?

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

运行效果

渲染管线中的流程:

  • gl_Position 是一个包含顶点齐次坐标的4向量。该向量的XYZ分量将除以W分量。

  • 任何超出[-1,1]的分量都被剪切。

  • 结果将被转换为屏幕坐标。

  • 然后被光栅化器渲染到屏幕上。

  • 光栅化器在图形顶点之间插值(位置、颜色、法线)

  • 执行片段着色器“访问”图形内的每个像素。

如果使用纹理呢?为了用纹理“覆盖”图形,需要为每个像素执行采样操作,为此需要提供像素对于的纹理坐标。这些坐标是插值的结果。

代码展示:

顶点着色器:

其中的clamp函数的作用是,将第一个参数的值限制在第二个和第三个参数值之间。

片段着色器:


OpenGL实例教程08:插值的评论 (共 条)

分享到微博请遵守国家法律