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