alpha 不使用 glsl 着色器改变对象的透明度
alpha not changing transparency of object using glsl shader
为什么当我手动更改数组中的 alpha 值并传递给着色器时,0.0f
和 1.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
}
需要启用混合..
gl2.glEnable(GL.GL_BLEND);
gl2.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
为什么当我手动更改数组中的 alpha 值并传递给着色器时,0.0f
和 1.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
}
需要启用混合..
gl2.glEnable(GL.GL_BLEND);
gl2.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);