I don't know about ogre, but in OpenGL, you draw everything, but don't flip the screen, then render to texture, snagging the raw data in the process, and back converting this data into a surface. Here's some code I wrote a while back: http://geometrian.com/Programs/Tutorials/Screenshot.py For your case, modify to use the framebuffer.
Of course, this might be completely useless with ogre... Ian
