Rendering to different viewports (parts) of the same screen can be easily done with blending. As far as I know `GL_BLEND` or `glBlendFunc` isn't considered legacy.

For example splitting screen into four parts and rendering the same scene four times to each corner with different uniforms and different viewports:

    bindFramebuffer();
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    scene->setConstPerFrameUniforms();

    glEnable(GL_BLEND);
    glBlendFunc(GL_ONE, GL_ONE);

    //left bottom
    glViewport(0, 0, WindowWidth*0.5, WindowHeight*0.5);
    scene->setVarPerFrameUniforms(1);
    scene->draw();

    //right bottom
    glViewport(WindowWidth*0.5, 0, WindowWidth*0.5, WindowHeight*0.5);
    scene->setVarPerFrameUniforms(2);
    scene->draw();

    //left top
    glViewport(0, WindowHeight*0.5, WindowWidth*0.5, WindowHeight*0.5);
    scene->setVarPerFrameUniforms(3);
    scene->draw();

    //right top
    glViewport(WindowWidth*0.5, WindowHeight*0.5, WindowWidth*0.5, WindowHeight*0.5);
    scene->setVarPerFrameUniforms(4);
    scene->draw();

    glViewport(0, 0, WindowWidth, WindowHeight); //restore default
    glDisable(GL_BLEND);


This use `GL_ONE, GL_ONE` blend mode but for some effects like overlapping different modes can be used. [This][1] is nice visual representation of different modes


  [1]: http://www.quake-1.com/docs/blending.jpg