glProvokingVertex - OpenGL 4 Reference Pages

## Name

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 | i + 1, if i < n 1, if i = n
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.

## Version Support

| OpenGL Version
--- | ---
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5
`glProvokingVertex` | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

## Copyright

Copyright © 2010-2014 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/.