当我有一个具有透明度的纹理(和一个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);
}
答案 0 :(得分:1)
我不知道lwjgl,但看到它基于opengl,你可能需要启用Blending。假设在顶点着色器中正确计算了pass_alpha。
此外,main中的第一行没有做任何事情,因为在最后一行中会覆盖frag_color。