right now i can just say, capturing the pixels from an opengl viewport is no problem at all, in fact it is offscreen rendering, if you do not post a refreshdisplay to opengl, \
it should be easily possible to set the current rendering frame to something bigger than the viewport temporarly for rendering, but keep in mind that zou can not use screen resolutions ofer 2048x2048, or is it 4096x4096 i think this is what your friend meant with assembling the parts, this has to be done anyway for images exceeding 4096x4096 or so pixels ....
Trifox,
I've learned quite a bit about this since posting my question.
You can't draw to an area larger than your viewport. You run into pixel ownership problems. It might work on some implementations, but the results are undefined.
If your driver supports it, you can use framebuffer objects (FBOs) attached to a renderbuffer object, and draw offscreen into that. However, that doesn't buy you very large output sizes. On my platform, the driver claims it can handle a renderbuffer of up to 4096 x 4096, but the driver crashes if you try to create a renderbuffer that big. Plus, FBOs are not supported on all implementations.
Instead, I create a pixel map in main memory, then use the current viewport. I create a series of tiles that are as big as the current viewport or smaller. I adjust the view frustum so that the viewport shows a portion of the whole image I want to render, render that portion to the back buffer, use glReadPixels to copy the pixels into my pixel map, then move on to the next tile. It was a fair amount of work to do, but it works perfectly, and can output at an arbitrary output size.
I used a GNU licensed code library called "tr" as the model for my code. I did not want to put my code into the public domain, so I just studied how the "tr" library worked and then wrote my own version.
Duncan C