Light | Dark

# docs.GL

OpenGL 4
OpenGL 3
OpenGL 2

# glPolygonMode

## Name

glPolygonMode — select a polygon rasterization mode

## C Specification

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

## 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`

## Tutorials

Songho - OpenGL Vertex Array

## See Also

glBegin, glEdgeFlag, glLineStipple, glLineWidth, glPointSize, glPolygonStipple

## Copyright

Copyright © 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see https://web.archive.org/web/20171022161616/http://oss.sgi.com/projects/FreeB/.

Think you can improve this page? Edit this page on GitHub.