You gave me an idea. There could be a function to set the render target, then all calls to draw_ functions after that will be rendered to the render target.
Something like this: You can pass a BMAP* to it as the render target, or NULL for no render target.