I'm making a 2D game engine (cause 3D was one two many axes

) and I thought I might upgrade it to OpenGL 3 and 4 because
apparently its 'better'.
I haven't started yet because I found a bit of a problem...
My 'Sprite' class has four properties for color: red, green, blue and alpha.
And with OpenGL 3 and 4 you have to provide the color first up in your VAO.
So how do I keep the color 'live'?
With vertices, I can just have a VAO with the width and height of 1, then I just transform, rotate and scale it.
But for color, I have heard of glBufferSubData and the OpenGL docs for glBufferData also have a GL_STREAM_DRAW mode.
So that gives me two options but I thought it would make it slow using one of these methods every frame, which is definitely not what I want.
So, can someone help me get some things straight?