0

透明度 (およびアルファ チャネル) を持つテクスチャがある場合、透明な領域は値 (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);

}
4

1 に答える 1

2

lwjgl はわかりませんが、opengl をベースにしているため、Blendingを有効にする必要があるかもしれません。pass_alpha が頂点シェーダーで正しく計算されていると仮定します。

また、最後の行で frag_color が上書きされるため、main の最初の行は何もしません。

于 2013-01-18T03:34:04.330 に答える