0

当我有一个具有透明度(和一个 alpha 通道)的纹理时,透明区域似乎作为具有值(0、0、0、1)的 vec4s 通过。丢弃任何 alpha 值为 0 的颜色很容易(显然 0 仍然存在......)。但这也导致了 0 到 1 之间的透明度问题。一切都显示为完全不透明,我无法想象是什么原因造成的。

这是我的着色器的样子。我一直在玩它,但这是我目前正在处理的一个。只需将 alpha 值始终设为 0.5f,看看会发生什么。仍然完全不透明:

#version 150 core

uniform sampler2D sampler;

in vec4 pass_Color;
in vec2 pass_TextureCoord;
in float pass_alpha;

out vec4 frag_Color;

void main(void) {
    frag_Color = pass_Color;

    vec3 color = texture2D(sampler, pass_TextureCoord);

    frag_Color = vec4(color, pass_alpha);

}
4

1 回答 1

2

我不知道 lwjgl,但是看到它是基于 opengl 的,你可能必须启用Blending。假设在顶点着色器中正确计算了 pass_alpha。

此外, main 中的第一行没有做任何事情,因为 frag_color 在最后一行被覆盖。

于 2013-01-18T03:34:04.330 回答