Antialiasing of a point, line, or polygon is effected in one of two ways depending on whether the GL is in RGBA or color index mode.
In RGBA mode,
the R, G, and B values
of the rasterized fragment are left unaffected, but the A value
is multiplied by a floating-point value in the range that describes
a fragment's screen pixel coverage.
The per-fragment stage of the GL can be set up to use the A value
to blend the incoming fragment with the corresponding
pixel already present in the framebuffer.
In color index mode,
the least significant b bits (to the left of the binary point)
of the color index are used for antialiasing;
, where m is the number of bits in the color index portion
of the framebuffer.
The antialiasing process sets these b bits based on the fragment's coverage
value:
the bits are set to zero for no coverage and to all ones for complete
coverage.
The details of how antialiased fragment coverage values are computed are difficult to specify in general. The reason is that high-quality antialiasing may take into account perceptual issues as well as characteristics of the monitor on which the contents of the framebuffer are displayed. Such details cannot be addressed within the scope of this document. Further, the coverage value computed for a fragment of some primitive may depend on the primitive's relationship to a number of grid squares neighboring the one corresponding to the fragment, and not just on the fragment's grid square. Another consideration is that accurate calculation of coverage values may be computationally expensive; consequently we allow a given GL implementation to approximate true coverage values by using a fast but not entirely accurate coverage computation.
In light of these considerations,
we chose to specify the behavior of exact antialiasing in the prototypical
case that each displayed pixel is a perfect square of uniform intensity.
The square is called a fragment square and has lower left corner
and upper right corner
.
We recognize that this simple box filter may not produce the most
favorable antialiasing results,
but it provides a simple, well-defined model.
A GL implementation may use other methods to perform antialiasing, subject to the following conditions: