I'm quite new learn OpenGL and the topic of framebuffers is quite confusing to me. I read that some uses of it is to generate a second target to render to, allowing us to make mirrors etc. However, wouldn't the use of glViewport() be enough, where you can specify different rendering operations to different parts of the same framebuffer? What are the usage differences between the 2 and when should I prefer to use each one?