What I want to do is multiple a grayscale alpha bitmap with an RGB color value, and then draw the resulting RGB bitmap to screen additively, that is, at each pixel I want:
p_new[r/g/b] = p_old[r/g/b] + colorValue[r/g/b] * grayscaleBitmapValue
I know I can construct an intermediate RGB bitmap or texture holding (colorValue[r/g/b] * grayscaleBitmapValue), but I'd rather avoid this wasteful step if possible, because each alpha bitmap will be multiplied with quite a number of different color values.
What's the fastest way to do this in either 2D or OpenGL ES ?