What I am trying to do is add a darker red color with alpha (0.1,0,0,0.2) on top of a bright red (1,0,0,1). For the first layer it works fine, the result is (0.9 ,0 ,0, 1); However when the red value gets to 0.5 it cannot drop below that value.
The first layer is demonstrated with the following equation, and works fine:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
ColorBuffer color = (1,0,0,1) Bright Red
SourceColor color = (0.1,0,0,0.2) Dark Red
GL_ONE = 1 , GL_ONE_MINUS_SRC_ALPHA = 1 - 0.2 = 0.8
Cf = (ColorSource * One) + (ColorBuffer * One Minus Src Alpha);
Cf = ((0.1,0,0)*1 ) + ((1,0,0) * 0.8);
Cf = 0.1,0,0 + 0.8,0,0;
Cf = 0.9,0,0 // Here is the result
Now further down the line after many layers, it will get to a point where the destination color is darker : 0.5, now the color never gets any darker as demonstrated below it starts with 0.5,0,0 , but results in 0.5,0,0:
Cf = ((0.1,0,0)*1 ) + ((0.5,0,0) * 0.8);
Cf = 0.1,0,0 + 0.4,0,0;
Cf = 0.5,0,0
Here is the result which means the color buffer has not changed and the color I am overlaying no longer has any effect.
How do I get my dark red to layer until it replaces the bright red?
SIMPLE PROCESSING SKETCH DEMONSTRATING THE PROBLEM - you will notice here I am trying GL_SRC_ALPHA and it still has that problem:
http://studionu.net/files/OPENGL_test.zip
here is an image with the issue, note how the green still shines through.
http://studionu.nu/files/GLPaint_dark_color.png
The image below describes the problem on the LEFT on the RIGHT is the desired effect.
[ATTACH=CONFIG]178[/ATTACH]