0
我用下面的片段着色器,它採用了霧化效果,吸取我的場景:混紡紗線卻不如預期
precision mediump float;
uniform int EnableFog;
uniform float FogMinDist;
uniform float FogMaxDist;
varying lowp vec4 DestinationColor;
varying float EyeToVertexDist;
float computeFogFactor()
{
float fogFactor = 1.0;
if (EnableFog != 0)
{
//Use a bit lower vlaue of FogMaxDist to get a better fog effect - it will make the far end disappear quicker.
float fogMaxDistABitCloser = FogMaxDist * 0.98;
fogFactor = (fogMaxDistABitCloser - EyeToVertexDist)/(fogMaxDistABitCloser - FogMinDist);
fogFactor = clamp(fogFactor, 0.0, 1.0);
}
return fogFactor;
}
void main(void)
{
float fogFactor = computeFogFactor();
gl_FragColor = DestinationColor * fogFactor;
}
並啓用alpha混合:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
結果如下場景:
我的問題是在W中的地方HICH線重疊 - 其結果是,顏色似乎比兩條線的顏色較深:
我怎樣才能解決這個問題?
這是因爲這樣的顏色混合的作品。你畫一條線,然後再畫一條線,等等。最終結果是像素加在幀緩衝區中,使得交叉點看起來更暗。如果你調整了混合函數,我認爲你可以修復它。我不是很顏色混合精通自己,所以我建議你給它一個嘗試一些可用的連擊:http://www.opengl.org/sdk/docs/man/html/glBlendFunc.xhtml – glampert