# glProvokingVertex.3G man page

glProvokingVertex — specifiy the vertex to be used as the source of data for flat shaded varyings

## C Specification

**void glProvokingVertex(GLenum ***provokeMode***);**

## Parameters

*provokeMode*

Specifies the vertex to be used as the source of data for flat shaded varyings.

## Description

*Flatshading* a vertex shader varying output means to assign all vetices of the primitive the same value for that output. The vertex from which these values is derived is known as the *provoking vertex* and **glProvokingVertex** specifies which vertex is to be used as the source of data for flat shaded varyings.

*provokeMode* must be either **GL_FIRST_VERTEX_CONVENTION** or **GL_LAST_VERTEX_CONVENTION**, and controls the selection of the vertex whose values are assigned to flatshaded varying outputs. The interpretation of these values for the supported primitive types is:

Primitive Type of Polygon i | First Vertex Convention | Last Vertex Convention |
---|---|---|

point | i | i |

independent line | 2i - 1 | 2i |

line loop | i |
.PP 1, if |

line strip | i | i + 1 |

independent triangle | 3i - 2 | 3i |

triangle strip | i | i + 2 |

triangle fan | i + 1 | i + 2 |

line adjacency | 4i - 2 | 4i - 1 |

line strip adjacency | i + 1 | i + 2 |

triangle adjacency | 6i - 5 | 6i - 1 |

triangle strip adjacency | 2i - 1 | 2i + 3 |

If a vertex or geometry shader is active, user-defined varying outputs may be flatshaded by using the flat qualifier when declaring the output.

## Notes

**glProvokingVertex** is available only if the GL version is 3.2 or greater.

## Errors

**GL_INVALID_ENUM** is generated if *provokeMode* is not an accepted value.

## Copyright

Copyright © 2010-2013 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.

## Copyright

Copyright © 2010-2013 Khronos Group