I'm struggling with understanding how blending works. Here's what I understand: when I set the following
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
then I would expect to have the following result when blending $scr$ with $dst$: $$ result = src.a \cdot src + (1-scr.a) \cdot dst $$ This is the blending function setup I commonly stumble upon. My problem is the following: when I have a completely opaque background, let's say $dst=(1,0,0,1)$, and I render a half opaque square in front of it $src=(0,1,0,0.5)$ then the resulting alpha for the new color will be $$ result.a = src.a \cdot src.a + (1-src.a) \cdot dst.a = 0.5 \cdot 0.5 + 0.5 \cdot 1 = 0.75 $$ How does it make sense to have a half opaque object in front of a fully opaque object result in something that is not fully opaque again? I feel like I'm misunderstanding something, I'm glad for any help I can get.