透明度 (およびアルファ チャネル) を持つテクスチャがある場合、透明な領域は値 (0、0、0、1) を持つ vec4 として通過しているように見えます。アルファ値が 0 の色を破棄するのは簡単です (どうやら 0 はまだ残っているようです...)。しかし、これは 0 と 1 の間の透明度にも問題を引き起こしています。
これが私のシェーダーの外観です。私はそれでかなり遊んでいますが、これは現在私が扱っているものです。アルファ値を常に 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);
}