glPolygonMode
Prev | GL | Next

## Name

glPolygonMode — select a polygon rasterization mode

## C Specification

`void `glPolygonMode`` | `(` | `GLenum `face`, GLenum `mode`);`

## Python Specification

``glPolygonMode`` | `(` | ``face`, `mode`) → `None``

## Parameters

`face`
  Specifies the polygons that `mode` applies to. Must be `GL_FRONT` for front-facing polygons, `GL_BACK` for back-facing polygons, or `GL_FRONT_AND_BACK` for front- and back-facing polygons.
`mode`
  Specifies how polygons will be rasterized. Accepted values are `GL_POINT`, `GL_LINE`, and `GL_FILL`. The initial value is `GL_FILL` for both front- and back-facing polygons.

## Description

`glPolygonMode` controls the interpretation of polygons for rasterization. `face` describes which polygons `mode` applies to: front-facing polygons (`GL_FRONT`), back-facing polygons (`GL_BACK`), or both (`GL_FRONT_AND_BACK`). The polygon mode affects only the final rasterization of polygons. In particular, a polygon's vertices are lit and the polygon is clipped and possibly culled before these modes are applied.

Three modes are defined and can be specified in `mode`:

`GL_POINT`
  Polygon vertices that are marked as the start of a boundary edge are drawn as points. Point attributes such as `GL_POINT_SIZE` and `GL_POINT_SMOOTH` control the rasterization of the points. Polygon rasterization attributes other than `GL_POLYGON_MODE` have no effect.
`GL_LINE`
  Boundary edges of the polygon are drawn as line segments. They are treated as connected line segments for line stippling; the line stipple counter and pattern are not reset between segments (see glLineStipple). Line attributes such as `GL_LINE_WIDTH` and `GL_LINE_SMOOTH` control the rasterization of the lines. Polygon rasterization attributes other than `GL_POLYGON_MODE` have no effect.
`GL_FILL`
  The interior of the polygon is filled. Polygon attributes such as `GL_POLYGON_STIPPLE` and `GL_POLYGON_SMOOTH` control the rasterization of the polygon.

## Examples

To draw a surface with filled back-facing polygons and outlined front-facing polygons, call glPolygonMode(`GL_FRONT`, `GL_LINE`);

## Notes

Vertices are marked as boundary or nonboundary with an edge flag. Edge flags are generated internally by the GL when it decomposes polygons; they can be set explicitly using `glEdgeFlag`.

## Errors

`GL_INVALID_ENUM` is generated if either `face` or `mode` is not an accepted value.

`GL_INVALID_OPERATION` is generated if `glPolygonMode` is executed between the execution of `glBegin` and the corresponding execution of `glEnd`.

## Associated Gets

`glGet` with argument `GL_POLYGON_MODE`

## See Also

glBegin, glEdgeFlag, glLineStipple, glLineWidth, glPointSize, glPolygonStipple

Prev | Up | Next
glPointSize | Home | glPolygonOffset