alpha不使用glsl着色器更改对象的透明度

时间:2015-05-11 00:02:46

标签: opengl glsl

为什么我手动更改数组中的alpha值,传递给着色器时,0.0f1.0f的结果是一样的?

我希望以一定程度的透明度绘制对象,具体取决于alpha值。

我没有使用任何纹理。我总是在黑色背景下看到我的红色物体。

glsl访问java变量..

float[] color = {1.0f, 0.0f, 0.0f, 1.0f};

gl2.glGetUniformLocation(shaderProgram, "vColor");
gl2.glUniform4fv(mColorHandle, 1, color, 0);

glsl,片段着色器..

#version 120

uniform vec4 vColor;

void main() {
    gl_FragColor = vColor;
    gl_FragColor.a = 0.0; // does not make object transparent
    // gl_FragColor.a = 1.0; // does not make object transparent
}

1 个答案:

答案 0 :(得分:12)

需要启用混合..

gl2.glEnable(GL.GL_BLEND);
gl2.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);