2012-04-08 79 views
0

如果我们要使用顶点着色器和片段着色器生成雾,常用的方法之一是计算顶点着色器中顶点的距离,并在片段着色器中应用雾混合颜色。谁计算gl_FragColor三角形内的点?

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

回答

2

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

在一些其他版本的OpenGL中,您可以更改此行为。因此,例如雾,只要你的雾公式是一个在世界空间的线性函数,你可以将来自顶点着色器的插值雾值混合到片段着色器中的gl_FragColor中,它应该看起来是正确的。

但是,如果你的雾不是线性的,为了得到正确的结果,你将需要在片段着色器中分别计算每个片段的雾值。