0

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

谢谢!

4

1 回答 1

1

看起来我正在使用预乘 alpha。切换到普通纹理,效果很好

抱歉,添麻烦了!

于 2012-11-11T19:49:45.287 回答