AlphaPlayer
AlphaPlayer copied to clipboard
fix blend color
The color of your left video is (A, A, A,1.0), and the color of your right video is (R * A, G A, B * A,1.0). The mix colors in shader are (R A, G *A, B *A,A). So shader color is actually pre-multiplied.
And then use it in the VideoRenderer GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA,GLES20.GL_ONE_MINUS_SRC_ALPHA) Merged (0,0,0,0) In fact, the final color is (R A A, G AA, B * A *A, A * A). This is wrong, blend two pre-multiplied colors that must be used GLES20.glBlendFunc(GLES20. GL_ONE, GLES20.GL_ONE_MINUS_SRC_ALPHA).
if left video is (A, A, A,1.0), and right video is (R , G , B ,1.0),in shader must Multiplied A
刚开源那会就发现这个问题了,以为没多久就会修复,glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
alpha多乘了一次,会导致边缘部分色彩偏暗。