The graphics pipeline in a fundamental concept in computer graphics and refers to a series of interconnected stages through which data and commands describing a scene go through when being rendered. The term rendering pipeline is also used, sometimes synonymously, but often to refer to non-rasterisation based rendering approaches.
OpenGL has included the notion of a graphics pipeline from the outset. The following image is from the first version of "Redbook", describing OpenGL 1.1. Note that the pipeline includes both vertex and pixel data.
A similar diagram is still used in the latet OpenGL specification
The first OpenGL specification has an associated diagram showing the full state machine which shows the pipeline in detail.
A simplified version of the pipeline for vertices only is shown below, along with the corresponding data from each stage ( from the Cg tutorial)
We also looked at the graphics pipeline in Interactive 3D Graphics and Animation
One of the key developments in computer graphics has been the evolution of the GPU from a fixed pipeline to a programmable pipeline. The means various stages of the pipeline can be programmed, using programs called shaders.
In OpenGL 2 vertex and fragment shaders were introduced. More recently in OpenGL 3 and 4 further programmable processor stages have been introduced, in particular to perform tesselation.
The following diagram, from the OpenGL Shading Language book (aka "The Orange Book") shows the programmable OpenGL pipeline with a programmable vertex and fragment processor
OpenGL was designed with the idea of being able to design and use special purpose hardware, i.e. GPUs, to accelerate performance. An early paper discusses the design of OpenGL
Early graphics hardware accelerators, in the form of multiple circuit boards, were available from various companies, including Silicon Graphics, where OpenGL originated. Two seminal SIGGRAPH papers discuss them: one from 1988 and one from 1993
The first GPU - a single chip graphics accelerator - was the GeForce 256 by Nvidia in 1999. Since then GPUs have dramatically increased performance, transistor count and programmability. The just released Nvidia GTX 460 has close to 2 billion transistors. Performance has gone from 10s-100s of thousands of triangles/second to 10s-100s of millions.
Optimizing graphics performance in applications relates directly to the graphics pipeline. Any stage of the pipeline may be a bottleneck, including the CPU.
Identifying bottlenecks and optimising performance is a deep technical topic. Further, bottlenecks and approaches to improving performance change with evolving hardware and rendering techniques.
An overview of performance optimisation is given in this presentation from Nvidia.