Pixel rectangles and bitmaps are the two primitives that are unaffected by the geometric operations that occur in the pipeline prior to rasterization. A pixel rectangle is a group of values destined for the framebuffer (typically the values represent colors, although provision is made for other types of data, such as depth values). The values, stored as a block of data in host memory, are sent using glDrawPixels. Arguments to glDrawPixels indicate the memory address of the data, the type of data, and the width and height of the rectangle that the data values form. In addition, two groups of parameters are maintained that control the decoding of the stored values. The first group describes how the values are packed in memory and provides a means for selecting a subrectangle from a larger containing rectangle. The second group controls conversions that may be applied to the values after they obtained: values may be scaled, offset and mapped by means of look-up tables. These various parameters form a flexible means for specifying rectangular images stored in a variety of formats.
Once obtained, the resulting values produce a rectangle of fragments. The location of this rectangle is controlled by the current raster position, which is treated very much like a point (including associating a color and texture coordinates with it), except that it is set with a separate command (glRasterPos) that does not occur between glBegin and glEnd. The rectangle's size is determined by its specified width and height as well as the setting of pixel rectangle zoom parameters (set with glPixelZoom).
A bitmap is similar to a pixel rectangle, except that it specifies a rectangle of zeros and ones, and is designed for describing characters that can be placed at a projected 3D location (through the current raster position). Each one in the bitmap produces a fragment whose associated values are those of the current raster position, while each zero produces no fragment. The glBitmap command also specifies offsets that control how the bitmap is placed with respect to the current raster position and how the current raster position is advanced after the bitmap is drawn (thus determining the relative positions of sequential bitmaps).