logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

C Specification

voidglProvokingVertex(GLenumprovokeMode);

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 provokingvertex 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:
       ┌──────────────────────────────┬──────────────────────────┬────────────────────────────────────────────┐
       │  PrimitiveTypeofPolygoniFirstVertexConventionLastVertexConvention                    │
       ├──────────────────────────────┼──────────────────────────┼────────────────────────────────────────────┤
       │ point                        │ ii                                          │
       ├──────────────────────────────┼──────────────────────────┼────────────────────────────────────────────┤
       │ independent line             │ 2i - 1                   │ 2i                                         │
       ├──────────────────────────────┼──────────────────────────┼────────────────────────────────────────────┤
       │ line loop                    │ i                        │                                            │
       │                              │                          │        i + 1, if i < n                     │
       │                              │                          │                                            │
       │                              │                          │                                        .PP │
       │                              │                          │        1, if i = n                         │
       ├──────────────────────────────┼──────────────────────────┼────────────────────────────────────────────┤
       │ line strip                   │ ii + 1                                      │
       ├──────────────────────────────┼──────────────────────────┼────────────────────────────────────────────┤
       │ independent triangle         │ 3i - 2                   │ 3i                                         │
       ├──────────────────────────────┼──────────────────────────┼────────────────────────────────────────────┤
       │ triangle strip               │ ii + 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.

Errors

GL_INVALID_ENUM is generated if provokeMode is not an accepted value.

Name

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

Notes

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

Parameters

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

See Also

Version Support

       ┌───────────────────┬───────────────────────────────────────────────────────────────────────┐
       │                   │                OpenGLVersion                                         │
       ├───────────────────┼─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┤
       │ Function2.02.13.03.13.23.34.04.14.24.34.44.5 │
       │ /                 │     │     │     │     │     │     │     │     │     │     │     │     │
       │ Feature           │     │     │     │     │     │     │     │     │     │     │     │     │
       │ Name              │     │     │     │     │     │     │     │     │     │     │     │     │
       ├───────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
       │ glProvokingVertex │  -  │  -  │  -  │  -  │  ✔  │  ✔  │  ✔  │  ✔  │  ✔  │  ✔  │  ✔  │  ✔  │
       └───────────────────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘

See Also