1.6. Processing Pipeline
For specifying the behavior of OpenGL, the various operations are defined to be applied in a particular order, so we can also think of OpenGL as a GRAPHICS PROCESSING PIPELINE.
Let's start by looking at a block diagram of how OpenGL was defined up through OpenGL 1.5. Figure 1.1 is a diagram of the so-called FIXED FUNCTIONALITY of OpenGL. This diagram shows the fundamentals of how OpenGL has worked since its inception and is a simplified representation of how OpenGL still works. It shows the main features of the OpenGL pipeline for the purposes of this overview. Some new features were added to OpenGL in versions 1.1 through 1.5, but the basic architecture of OpenGL remained unchanged until OpenGL 2.0. We use the term fixed functionality because every OpenGL implementation is required to have the same functionality and a result that is consistent with the OpenGL specification for a given set of inputs. Both the set of operations and the order in which they occur are defined (fixed) by the OpenGL specification.
Figure 1.1. Overview of OpenGL operation
It is important to note that OpenGL implementations are not required to match precisely the order of operations shown in Figure 1.1. Implementations are free to modify the order of operations as long as the rendering results are consistent with the OpenGL specification. Many innovative software and hardware architectures have been designed to implement OpenGL, and most block diagrams of those implementations look nothing like Figure 1.1. However, the diagram does ground our discussion of the way the rendering process appears to work in OpenGL, even if the underlying implementation does things a bit differently.