Well, it's a commonly asked question. If you just want to spin or shrink what's drawn, at least in GL you can set up the projection matrix to draw everything rotated and zoomed on the fly. Not sure about DX.
If you're trying to do other things like grab text etc, basically you will have to draw it and grab it. I'm not sure what process grabimage uses, whether it turns it into a pixmap first then uploads. In GL using glCopyTexSubImage2D() seems to be hardware accelerated on my iMac at least and can grab a whole screen into a texture and redraw the texture without dropping below 60fps.
Otherwise you'd have to look into using actual rendering to textures, pbuffers, etc.
Why would you want to draw text to a buffer, grab it, then draw it again? Why not just draw it once where it needs to go?
If you're trying to do other things like grab text etc, basically you will have to draw it and grab it. I'm not sure what process grabimage uses, whether it turns it into a pixmap first then uploads. In GL using glCopyTexSubImage2D() seems to be hardware accelerated on my iMac at least and can grab a whole screen into a texture and redraw the texture without dropping below 60fps.
Otherwise you'd have to look into using actual rendering to textures, pbuffers, etc.
Why would you want to draw text to a buffer, grab it, then draw it again? Why not just draw it once where it needs to go?