All starts with Commands, which specify geometric objects
and control how they are drawn and handled
during the various processing stages.
Rather than having all commands proceed immediately through the pipeline, you can choose to accumulate some of them in a display list for processing at a later time.
The evaluator stage of processing provides an efficient means for approximating curve and surface geometry.
During per-vertex operations and primitive assembly, OpenGL processes geometric primitives: points, line segments, and polygons, all of which are described by vertices. Vertices are transformed and lit, and primitives are clipped to the viewport.
Rasterization produces a series of frame buffer addresses and associated values, called fragments, using a two-dimensional description of a point, line segment, or polygon.
Each fragment is fed into the last stage, per-fragment operations, which performs the final operations on the data before it is stored as pixels in the frame buffer. These operations include conditional updates to the frame buffer, blending of incoming pixel colors with stored colors, as well as masking and other logical operations on pixel values.
Input data can be in the form of pixels rather than vertices. Such data, which might describe an image for use in texture mapping, skips the first stage of processing and instead is processed as pixels, in the pixel operations stage. The result of this stage is either stored as texture memory, for use in the rasterization stage, or rasterized and the resulting fragments merged into the frame buffer just as if they were generated from geometric data.