OpenGL encapsulates the state required for drawing to a framebuffer into an
object called a framebuffer object (FBO).
FBO is a container that holds an object in memory that can be rendered to.
programmer can create an FBO for offscreen rendering. An FBO may be configured differently than the
window tied to the rendering context.
For example, the FBO may have a different size.
details in the SuperBible.