gouraud-shader计算每个三角形角的光照,并对三角形覆盖的每个像素的结果颜色进行线性插值。
如何编程这个特定的插值(在glsl代码中)?
你甚至需要自己编码吗?或者OpenGL单独插入(内部)
From https://www.opengl.org/wiki/Type_Qualifier_(GLSL):
插值限定符
某些输入和输出可以使用插值限定符。这些是任何值,可以作为光栅化的结果插值。这些包括:
- 顶点着色器输出
- 镶嵌控制着色器输入(以匹配VS)
- 镶嵌评估着色器输出
- 几何着色器输入(与TES/VS的输出匹配)和输出
- 片段着色器输入
插值限定符控制值如何跨三角形或其他原语进行插值。有三个基本的插值限定符。
平
不插入该值。给片段着色器的值是该原语的激发顶点的值。
noperspective
该值将在窗口空间中线性插值。这通常不是你想要的,但它也有它的用处。
光滑
该值将以透视正确的方式插入。如果没有限定符,这是默认值。
因为平滑是默认的,OpenGL为你插入它。如果你不想要插值,你可以用关键字flat在着色器中定义颜色,就像这样:
flat vec3 color;