透明度与圈子

时间:2014-01-02 20:36:55

标签: graphics opengl-es webgl

我使用两个三角形和片段着色器绘制一个圆圈。我可以在由三角形形成的正方形的中间绘制一个漂亮的圆圈,但由于某种原因,圆圈被剩余的白色三角形包围并且不透明。我希望边缘是透明的,这样两个圆圈就能很好地叠加在一起。

这是我的片段着色器代码:

void main() {
    float diff = 1.0 / vscale.x;
    float dist = distance(center, origin);
    float step = smoothstep(radius - diff, radius + diff, dist);

    gl_FragColor = mix(vec4(1.0, 0.0, 0.0, 1.0), vec4(1.0, 0.0, 0.0, 0.0), step);
}

Bad circles

1 个答案:

答案 0 :(得分:2)

正如@ andon-m-coleman所说,我在片段之间缺乏混合。我不知道我必须设置一个blendfunc。谢谢!

编辑:也就是说,我没有设置混合功能,如下所示:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);