Each edge of each primitive generated from a polygon, triangle strip, triangle fan, separate triangle set, quadrilateral strip, or separate quadrilateral set, is flagged as either boundary or non-boundary. These classifications are used during polygon rasterization; some modes affect the interpretation of polygon boundary edges (see section 3.5.4). By default, all edges are boundary edges, but the flagging of polygons, separate triangles, or separate quadrilaterals may be altered by calling
void EdgeFlag ( boolean flag ) ;
void EdgeFlagv ( boolean *flag ) ;
to change the value of a flag bit. If *flag is zero, then the flag bit is set to FALSE; if *flag is non-zero, then the flag bit is set to TRUE.
When Begin is supplied with one of the argument values POLYGON, TRIANGLES, or QUADS, each vertex specified within a Begin and End pair begins an edge. If the edge flag bit is TRUE, then each specified vertex begins an edge that is flagged as boundary. If the bit is FALSE, then induced edges are flagged as non-boundary.
The state required for edge flagging consists of one current flag bit. Initially, the bit is TRUE. In addition, each processed vertex of an assembled polygonal primitive must be augmented with a bit indicating whether or not the edge beginning on that vertex is boundary or non-boundary.