如果我们要使用顶点着色器和片段着色器生成雾,其中一种常用方法是计算顶点着色器中顶点的距离,并在片段着色器中应用混合雾的颜色。 / p>
我的问题是,由于我们只计算了三角形顶点的距离,OpenGL如何确定三角形内点的颜色?如果它是自动计算的,有没有办法控制计算?
答案 0 :(得分:2)
在OpenGL ES 2中,从顶点着色器传递到片段着色器的所有属性的值在被着色的三角形表面上线性插值,透视校正。
在其他一些OpenGL版本中,您可以更改此行为。
因此,例如对于雾,只要您的雾公式是世界空间上的线性函数,您就可以将顶点着色器中的插值雾值与片段着色器中的gl_FragColor混合,它应该看起来正确。
但是,如果您的雾不是线性的,要获得正确的结果,您需要在片段着色器中单独计算每个片段的雾值。