如何使GLSL将透明纹理视为白色而不是黑色?

时间:2012-11-11 19:24:32

标签: opengl-es opengl-es-2.0 glsl

我正在学习使用ES 2.0的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),这是一个透明的黑色像素,使我的图像边缘变暗。是否可以将透明像素视为白色?或者有更好的实现发光的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

对不起,对不起!