最好的方法是什么?

我试图用看起来像这样的片段着色器天真地做到这一点:

varying lowp vec4 color;
void main()
{
    lowp vec4 alpha = colorVarying.wwww;
    const lowp vec4 one = vec4(1.0, 1.0, 1.0, 1.0);
    lowp vec4 oneMinusAlpha = one-alpha;
    gl_FragColor = gl_FragColor*oneMinusAlpha + colorVarying*alpha;
    gl_FragColor.w = 1.0;
}


但这是行不通的,因为在着色器运行之前,gl_FragColor似乎不包含任何有意义的内容。

正确的方法是什么?

最佳答案

Alpha混合已为您完成。在着色器退出时,gl_FragColor应该在w组件中保留alpha值,并且您必须使用普通API设置混合模式,就像根本没有着色器一样。例如,gl_FragColor = vec4(0,1,0,0.5)将产生绿色的,透明度为50%的片段。

关于iphone - Alpha与OpenGL ES 2.0融合了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3793691/

10-11 22:39
查看更多