使用GLSL着色器的OpenGL每像素着色

时间:2014-02-18 18:40:42

标签: opengl colors glsl pixel vertex

是否可以使用GLSL着色器计算每个像素而不是每个顶点的顶点颜色?因为它看起来有点像每个顶点照明(有点难看)。

例如

我拥有的: enter image description here

它应该是什么样的: enter image description here

1 个答案:

答案 0 :(得分:3)

  

是否可以使用GLSL着色器计算每个像素的顶点颜色[...]

“每个像素的顶点颜色”并没有真正意义。人们计算的是片段的颜色(这是像素​​光栅的光栅化结果,但尚未影响帧缓冲像素)。并且该颜色始终计算每个片段 - 在“每顶点照明”设置中,该颜色仅通过插入基元的每个顶点处的照明颜色来计算(aka。Gouraud Shading) ,可能进一步操纵它(例如通过纹理映射)。

你在这里的意思是“是否可以使用GLSL着色器计算每个片段的照明效果(Phong Shading,每像素照明)?”答案就是:是的。这可以在片段着色器中完成。

  

因为它看起来有点像每个顶点照明(有点难看)。

看起来那样?固定功能GL?是的,它是这样指定的。旧的固定功能照明是按顶点完成的,当时只支持平面和Gouraud阴影。着色器确实改变了这一点。