OpenGL - GLSL着色器,Alpha混合

时间:2013-08-24 19:13:24

标签: java opengl glsl shader fragment-shader

我正在使用此片段着色器:

#version 150 core

uniform sampler2D texture1;

in vec4 pass_Color;
in vec2 pass_TextureCoord;

out vec4 out_Color;

void main(void) {
    out_Color = pass_Color;
    // Override out_Color with our texture pixel
    out_Color = texture(texture1, pass_TextureCoord) * pass_Color  ;
}

现在给pass_Color我给出一个rgba值。我改变了alpha值。纹理是rgba,它是一个PNG文件。我使用混合模式GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA。

现在问题是我传入的alpha值不会影响任何内容..

我想要它..

1 个答案:

答案 0 :(得分:0)

我最终这样做了:

vec4 tex =  texture(texture1, pass_TextureCoord);
out_Color = vec4(tex.r*(pass_Color[0]),tex.g*(pass_Color[1]),tex.b*(pass_Color[2]),tex.a*(pass_Color[3])) ;

工作得很好!