我希望我的纹理完全消失,使用以下片段着色器:
varying mediump vec2 text_coord_out;
uniform sampler2D sampler;
void main()
{
gl_FragColor = texture2D(sampler, text_coord_out);
gl_FragColor.w *= 0.0;
}
。 。 .it没有。我也试过gl_FragColor.a。想法?
答案 0 :(得分:9)
varying mediump float text_alpha_out;
varying mediump vec2 text_coord_out;
uniform sampler2D sampler;
void main()
{
gl_FragColor = texture2D(sampler, text_coord_out);
gl_FragColor = gl_FragColor * text_alpha_out;
}
我的混合看起来像这样:
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
答案 1 :(得分:7)
仅使用gl_fragColor =
次
vec4
vec4 red = vec4( 1,0,0,1 );
gl_fragColor = red;
答案 2 :(得分:5)
为什么它会消失?除非您赋予其含义,否则输出颜色的alpha值没有任何意义。通常,这意味着使用某种形式的blending。请注意,该链接描述了桌面OpenGL; GL ES等效工作方式大致相同,但桌面GL可能具有比ES更多的功能。
答案 3 :(得分:0)
gl_FragColor.w = 0;
应该工作。 * =操作可能使GLSL编译器感到困惑。