1
我設置glBlendFunc到OpenGL ES 2.0的混合
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
,並用於測試目的我設置的顏色在我的片段着色器這樣的
gl_FragColor = vec4(1.0,0.0,0.0,0.0);
不宜對象是完全透明的?如果不是,原因是什麼?
我設置glBlendFunc到OpenGL ES 2.0的混合
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
,並用於測試目的我設置的顏色在我的片段着色器這樣的
gl_FragColor = vec4(1.0,0.0,0.0,0.0);
不宜對象是完全透明的?如果不是,原因是什麼?
glBlendFunc()
的第一個參數是來源因子,第二個參數是目標因子。你的情況:
sfactor = 1.0;
dfactor = 1.0 - src.alpha;
爲src.alpha = 0.0
,從gl_FragColor
:
sfactor = 1.0;
dfactor = 1.0;
所以把到緩衝區的顏色將是:
buffer = sfactor * src + dfactor * dst;
代...
buffer = (1.0,0.0,0.0,0.0) + dst;
所以,把它簡單化,就是將1添加到現有緩衝區的紅色通道中。
如果你想使輸出完全透明的,通常的功能是:
glBlendFunc(GL_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
你寫的一個通常用於在源預乘阿爾法。但是(1,0,0,0)顯然不是預乘alpha值!
非常有幫助的解釋,謝謝! – cboe