--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
+ "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
+<refentry id="glProvokingVertex">
+ <refmeta>
+ <refmetainfo>
+ <copyright>
+ <year>2010</year>
+ <holder>Khronos Group</holder>
+ </copyright>
+ </refmetainfo>
+ <refentrytitle>glProvokingVertex</refentrytitle>
+ <manvolnum>3G</manvolnum>
+ </refmeta>
+ <refnamediv>
+ <refname>glProvokingVertex</refname>
+ <refpurpose>specifiy the vertex to be used as the source of data for flat shaded varyings</refpurpose>
+ </refnamediv>
+ <refsynopsisdiv><title>C Specification</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>void <function>glProvokingVertex</function></funcdef>
+ <paramdef>GLenum <parameter>provokeMode</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+ <!-- eqn: ignoring delim $$ -->
+ <refsect1 id="parameters"><title>Parameters</title>
+ <variablelist>
+ <varlistentry>
+ <term><parameter>provokeMode</parameter></term>
+ <listitem>
+ <para>
+ Specifies the vertex to be used as the source of data for flat shaded varyings.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+ <refsect1 id="description"><title>Description</title>
+ <para>
+ <emphasis>Flatshading</emphasis> 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 <emphasis>provoking vertex</emphasis> and
+ <function>glProvokingVertex</function> specifies which vertex is to be used as the source of data for flat shaded varyings.
+ </para>
+ <para>
+ <parameter>provokeMode</parameter> must be either <constant>GL_FIRST_VERTEX_CONVENTION</constant> or
+ <constant>GL_LAST_VERTEX_CONVENTION</constant>, 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:
+ <informaltable frame="topbot">
+ <tgroup cols="3" align="left">
+ <colspec colwidth="1.1*" />
+ <colspec colwidth="1*" />
+ <colspec colwidth="1*" />
+ <thead>
+ <row>
+ <entry rowsep="1" align="left"><emphasis role="bold">
+ Primitive Type of Polygon <emphasis>i</emphasis>
+ </emphasis></entry>
+ <entry rowsep="1" align="left"><emphasis role="bold">
+ First Vertex Convention
+ </emphasis></entry>
+ <entry rowsep="1" align="left"><emphasis role="bold">
+ Last Vertex Convention
+ </emphasis></entry>
+ </row>
+ <row>
+ <entry>
+ point
+ </entry>
+ <entry>
+ <emphasis>i</emphasis>
+ </entry>
+ <entry>
+ <emphasis>i</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ independent line
+ </entry>
+ <entry>
+ 2<emphasis>i</emphasis> - 1
+ </entry>
+ <entry>
+ 2<emphasis>i</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ line loop
+ </entry>
+ <entry>
+ <emphasis>i</emphasis>
+ </entry>
+ <entry>
+ <para>
+ <emphasis>i</emphasis> + 1, if <emphasis>i</emphasis> < <emphasis>n</emphasis>
+ </para>
+ <para>
+ 1, if <emphasis>i</emphasis> = <emphasis>n</emphasis>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ line strip
+ </entry>
+ <entry>
+ <emphasis>i</emphasis>
+ </entry>
+ <entry>
+ <emphasis>i</emphasis> + 1
+ </entry>
+ </row>
+ <row>
+ <entry>
+ independent triangle
+ </entry>
+ <entry>
+ 3<emphasis>i</emphasis> - 2
+ </entry>
+ <entry>
+ 3<emphasis>i</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ triangle strip
+ </entry>
+ <entry>
+ <emphasis>i</emphasis>
+ </entry>
+ <entry>
+ <emphasis>i</emphasis> + 2
+ </entry>
+ </row>
+ <row>
+ <entry>
+ triangle fan
+ </entry>
+ <entry>
+ <emphasis>i</emphasis> + 1
+ </entry>
+ <entry>
+ <emphasis>i</emphasis> + 2
+ </entry>
+ </row>
+ <row>
+ <entry>
+ line adjacency
+ </entry>
+ <entry>
+ 4<emphasis>i</emphasis> - 2
+ </entry>
+ <entry>
+ 4<emphasis>i</emphasis> - 1
+ </entry>
+ </row>
+ <row>
+ <entry>
+ line strip adjacency
+ </entry>
+ <entry>
+ <emphasis>i</emphasis> + 1
+ </entry>
+ <entry>
+ <emphasis>i</emphasis> + 2
+ </entry>
+ </row>
+ <row>
+ <entry>
+ triangle adjacency
+ </entry>
+ <entry>
+ 6<emphasis>i</emphasis> - 5
+ </entry>
+ <entry>
+ 6<emphasis>i</emphasis> - 1
+ </entry>
+ </row>
+ <row>
+ <entry>
+ triangle strip adjacency
+ </entry>
+ <entry>
+ 2<emphasis>i</emphasis> - 1
+ </entry>
+ <entry>
+ 2<emphasis>i</emphasis> + 3
+ </entry>
+ </row>
+ </thead>
+ </tgroup>
+ </informaltable>
+ </para>
+ <para>
+ If a vertex or geometry shader is active, user-defined varying outputs may be flatshaded by using the
+ <code>flat</code> qualifier when declaring the output.
+ </para>
+ </refsect1>
+ <refsect1 id="notes"><title>Notes</title>
+ <para>
+ <function>glProvokingVertex</function> is available only if the GL version is 3.2 or greater.
+ </para>
+ </refsect1>
+ <refsect1 id="errors"><title>Errors</title>
+ <para>
+ <constant>GL_INVALID_ENUM</constant> is generated if <parameter>provokeMode</parameter> is not an accepted value.
+ </para>
+ </refsect1>
+ <refsect1 id="Copyright"><title>Copyright</title>
+ <para>
+ Copyright <trademark class="copyright"></trademark> 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.
+ <ulink url="http://opencontent.org/openpub/">http://opencontent.org/openpub/</ulink>.
+ </para>
+ </refsect1>
+</refentry>