0

如果我们要使用顶点着色器和片段着色器生成雾,一种常见的方法是在顶点着色器中计算顶点的距离,并在片段着色器中应用雾混合颜色。

我的问题是,由于我们只计算了三角形顶点的距离,OpenGL 是如何决定三角形内点的颜色的?如果它是自动计算的,有没有办法控制计算?

4

1 回答 1

2

在 OpenGL ES 2 中,从顶点着色器传递到片段着色器的所有属性的值都是线性插值的,透视正确,在被着色的三角形表面上。

在其他一些 OpenGL 版本中,您可以更改此行为。

因此,例如对于雾,只要您的雾公式是世界空间上的线性函数,您就可以将来自顶点着色器的插值雾值混合到片段着色器中的 gl_FragColor 中,它应该看起来正确。

但是,如果您的雾不是线性的,要获得正确的结果,您需要在片段着色器中单独计算每个片段的雾值。

于 2012-04-08T09:53:06.890 回答