0
當我有一個具有透明度(和alpha通道)的紋理時,透明區域看起來像是帶有值(0,0,0,1)的vec4s。放棄通過alpha值爲0的任何顏色(顯然0仍然存在)很容易。但是這也導致0和1之間的透明度問題。一切都顯示出完全不透明,我無法想象是什麼導致了它的存在。片段着色器將所有的alpha值解釋爲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);
}
感謝您的回覆。我認爲你是對的,但你能向我解釋如何做到這一點?如果你只是放縱我,我一直在尋找整個早晨。 glEnablei()函數如何工作?我無法在任何地方找到它的例子。除GL_BLEND之外,我在哪裏調用它並使用哪些參數作爲參數? – SirYancy
如果您繪製到多個緩衝區(其中第二個參數是緩衝區的名稱),則只需要glEnablei。爲了啓用混合,只需使用glEnable(GL_BLEND)。 – fscan
你華麗的混蛋。謝謝。 – SirYancy