2012-11-11 62 views
0

我正在用ES 2.0学习GLSL,我正在尝试写一个辉光片段着色器。如何让GLSL将透明纹理视为白色而不是黑色?

这就是我现在所拥有的:

for(float x = startX; x < endX; x += w) { 
    for(float y = startY; y < endY; y += h) { 
     px = texture2D(u_texture, vec2(x, y)); 
     extra += px; 
     count++; 
    } 
} 
extra = clamp(extra/count, 0.0, 1.0); 

我得到的问题是,我得到附近纹理的边缘暗像素。我相信这是因为像素计数为(0.0,0.0,0.0,0.0),这是一个透明的黑色像素,它使我的图像在边缘变暗。是否有可能将透明像素视为白色?还是有更好的方法来实现辉光?

谢谢!

+0

您使用预乘alpha吗? – AshleysBrain

+0

啊,就是这样。应该知道:< – Xzhsh

回答

1

看起来像我正在使用预乘alpha。切换到正常的纹理,它工作正常

对不起,麻烦!