glBlend(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
That would be a multiplicative blending, between source and inverted destination.
Given that we'd like to get this:
pixel.rgb = (1 - source.rgb)
pixel.a = source.a
... and that OpenGL blending follows this formula:
pixel.rgba = source.rgba * arg1 + dest.rgba * arg2
... I don't think we can get the desired effect.
Blending modes are a way to choose how source and destination are mixed together, not a way to modify how the source is drawn.
Hm... let's assume we are drawing a white image (source) onto a red surface (target). Source values are 1.f, 1.f, 1.f. Target value is 1.f, 0.f, 0.f.
For the ONE_MINUS_DST_COLOR part, 1.f is multiplied with either 1.f-1.f (red) or with 1.f-0.f (green, blue). The other parameter is "ignored" so nothing is added to the result.
1.f * (1.f-1.f) + ZERO = 0.f (RED is now 0% and hence inverted)
1.f * (1.f-0.f) + ZERO = 1.f (GREEN)
1.f * (1.f-0.f) + ZERO = 1.f (BLUE)
And that is inverted. Am I not right?
You have shaders for that
I have never worked with shaders yet...