Your result is what you would expect, assuming that the destination color is black. It's not clear what exactly you intend glBlendFunc(GL_SRC_COLOR, GL_SRC1_COLOR);
to do. But what it will do is what blending always does.
The source factor (GL_SRC_COLOR
) will be multiplied by the source color (or, to be more precise, the source0 color). The destination factor (GL_SRC1_COLOR
) will be multiplied by the destination color. The results of these multiplications will be added together.
In your case, this means that the source0 color will be multiplied by itself (therefore making the result darker). The destination color will be multiplied by the source1 color; if the destination is zero, you get 0. Therefore, you get the source0 color multiplied by itself as the output.
Dual source blending is only useful (in that it's something you couldn't do in your shader) if you need to perform some operation between the two source colors and the destination color. If it can be expressed as (Src0 op Src1) op Dest
, then it's stuff you should do in your shader.