【问题标题】:alpha not changing transparency of object using glsl shaderalpha 不使用 glsl 着色器改变对象的透明度
【发布时间】:2015-05-11 17:49:40
【问题描述】:

当我手动更改数组中的 alpha 值并传递给着色器时,0.0f1.0f 的结果如何相同?

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

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

java 访问glsl 变量..

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
}

【问题讨论】:

  • 你启用了混合吗?

标签: opengl glsl


【解决方案1】:

需要启用混合..

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    相关资源
    最近更新 更多