Opentk/Source/Bind/Specifications/Docs/glProvokingVertex.xml
Stefanos A 60f971ffed Updated to the latest gl4 specs and docs
Large code-drop from Khronos upstream.
2013-11-03 12:43:50 +01:00

222 lines
9.4 KiB
XML

<?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">
<refentryinfo>
<copyright>
<year>2010-2013</year>
<holder>Khronos Group</holder>
</copyright>
</refentryinfo>
<refmeta>
<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>
<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>
</thead>
<tbody>
<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> &lt; <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>
</tbody>
</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-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.
<ulink url="http://opencontent.org/openpub/">http://opencontent.org/openpub/</ulink>.
</para>
</refsect1>
</refentry>