Drawing the same scene from many different positions and angles

I’m sorry if this question seems quite simple, but I couldn’t find a definite answer.

I want to draw the exact same scene from many different positions (location and angles), and for each position extract the way the scene looks
Currently, the way I do that is just to clear the window before each drawing, redrawing everything all over again, and then extracting the pixels’ values.
Something similar to that: (I use PyOpenGL, but that doesn’t really matter)

for each position:
draw_scene() # That calls a lot of drawing using different polygons and different colors
… glReadPixels(…)

Is there any way to do that much more efficiently? Maybe drawing the scene and just moving around in it or something similar?


For a perspective projection, if the viewpoint changes you have to redraw the entire scene. The case where the viewpoint remains fixed but the view direction changes can be dealt with using a cube map.

For a parallel projection (e.g. orthographic), then moving the viewpoint simply pans the 2D projection. This is why most early video games were 2D: you can construct the scene from pre-rendered images. However, you have to redraw the scene if the view direction changes.