My previous answer was actually incorrect. This is the expected result of what you are describing.
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA) means the resulting alpha
A_final = A_s * A_s + (1 - A_s) * A_d
( = 1)
1 * 1 + (1 - 1) * 0 == 1 + 0 == 1
, . , ( =.5),
.5 * .5 + (1 - .5) * 1 == .25 + .5 == .75
, , , , .
OpenGL, . , FBO . .
- - gl.ONE, gl.ONE_MINUS_SRC_ALPHA,
A_final = A_s + (1 - A_s) * A_d
-. , - gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA. gl.blendFuncSeparate gl.blendFunc, - .
gl.BlendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
( WebGL , , , ). , ( , gl_FragColor vec4(.5, .5, .5, .5)),
gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA)
, , .
- , WebGL, ( ), WebGL , ( vec4(1., 1., 1., .5) , undefined, / , ). gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA) OpenGL, .