GLPROVOKINGVERTEX(3G) | OpenGL 3.3 | GLPROVOKINGVERTEX(3G) |

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

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

*provokeMode*

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

*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 .PP 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.

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

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

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

03/08/2011 | OpenGL 3.3 |