Portal:OpenGL Objects/Framebuffer Objects
A Framebuffer Object (FBO) is a container object that stores a series of images that can, as a collection, be used as a Framebuffer. Images can be added to or removed from an FBO as needed. Images can come from Texture objects or Renderbuffer Objects. In this way, textures can be render targets.
Rendering to an image in a texture while reading from the same image is not generally allowed by the OpenGL memory model, though there are ways to make it work. Violating such constraints yields undefined behavior.