I think the best way to do this would be, as you said, to do everything in low-resolution text (it is best to use FBOs ) and then just display the texture by drawing a square of sceen size (of course, using GL_NEARESTas an increase filter for the texture). Perhaps you can also use glBlitFramebufferto copy directly from a low-level FBO to a high-resolution framebuffer, although I don't know if you can directly copy to a standard framebuffer (displayed) this way.
: framebuffer_blit , , res FBO , glBlitFramebuffer(EXT/ARB). , , - ( ). , , , . :
generate FBO with low-res renderbuffers for color and depth (and stencil)
...
glBindFramebuffer(GL_FRAMEBUFFER, lowFBO);
render_scene();
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
glBlitFramebuffer(0, 0, 640, 480, 0, 0, 1024, 768,
GL_COLOR_BUFFER_BIT [| GL_DEPTH_BUFFER_BIT], GL_NEAREST);