Difference between revisions of "GLAPI/glProvokingVertex"

From OpenGL Wiki
Jump to navigation Jump to search
m (Renaming category: 'API Reference 4' to 'Core API Reference'.)
m (Bot: Adding better formatting.)
 
(4 intermediate revisions by 2 users not shown)
Line 9: Line 9:
 
== Function Definition ==
 
== Function Definition ==
  
   void '''glProvokingVertex'''(GLenum ''provokeMode'');
+
   void '''glProvokingVertex'''(GLenum {{param|provokeMode}});
  
 
; provokeMode
 
; provokeMode
Line 18: Line 18:
 
''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.
 
''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 {{code|GL_FIRST_VERTEX_CONVENTION}} or {{code|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:  
+
{{param|provokeMode}} must be either {{enum|GL_FIRST_VERTEX_CONVENTION}} or {{enum|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'''''
 
! '''Primitive Type of Polygon ''i'''''
 
! '''First Vertex Convention'''
 
! '''First Vertex Convention'''
 
! '''Last Vertex Convention'''
 
! '''Last Vertex Convention'''
|+
+
|-
 
! point
 
! point
 
! ''i''
 
! ''i''
 
! ''i''
 
! ''i''
|+
+
|-
 
! independent line
 
! independent line
 
! 2''i'' - 1
 
! 2''i'' - 1
 
! 2''i''
 
! 2''i''
|+
+
|-
 
! line loop
 
! line loop
 
! ''i''
 
! ''i''
Line 41: Line 41:
  
  
|+
+
|-
 
! line strip
 
! line strip
 
! ''i''
 
! ''i''
 
! ''i'' + 1
 
! ''i'' + 1
|+
+
|-
 
! independent triangle
 
! independent triangle
 
! 3''i'' - 2
 
! 3''i'' - 2
 
! 3''i''
 
! 3''i''
|+
+
|-
 
! triangle strip
 
! triangle strip
 
! ''i''
 
! ''i''
 
! ''i'' + 2
 
! ''i'' + 2
|+
+
|-
 
! triangle fan
 
! triangle fan
 
! ''i'' + 1
 
! ''i'' + 1
 
! ''i'' + 2
 
! ''i'' + 2
|+
+
|-
 
! line adjacency
 
! line adjacency
 
! 4''i'' - 2
 
! 4''i'' - 2
 
! 4''i'' - 1
 
! 4''i'' - 1
|+
+
|-
 
! line strip adjacency
 
! line strip adjacency
 
! ''i'' + 1
 
! ''i'' + 1
 
! ''i'' + 2
 
! ''i'' + 2
|+
+
|-
 
! triangle adjacency
 
! triangle adjacency
 
! 6''i'' - 5
 
! 6''i'' - 5
 
! 6''i'' - 1
 
! 6''i'' - 1
|+
+
|-
 
! triangle strip adjacency
 
! triangle strip adjacency
 
! 2''i'' - 1
 
! 2''i'' - 1
Line 85: Line 85:
 
== Errors ==
 
== Errors ==
  
{{code|GL_INVALID_ENUM}} is generated if ''provokeMode'' is not an accepted value.
+
{{enum|GL_INVALID_ENUM}} is generated if {{param|provokeMode}} is not an accepted value.
 +
 
 +
== See Also ==
 +
 
 +
[[:Category:Core API Ref Vertex Rendering‎]]
  
 
== Copyright ==
 
== Copyright ==
Line 91: Line 95:
 
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/ http://opencontent.org/openpub/].
 
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/ http://opencontent.org/openpub/].
  
[[Category:Core API Ref Vertex Rendering|ProvokingVertex]]
+
[[Category:Core API Ref Vertex Specification|ProvokingVertex]]
 
[[Category:Core API Reference|ProvokingVertex]]
 
[[Category:Core API Reference|ProvokingVertex]]

Latest revision as of 01:08, 19 February 2013

glProvokingVertex
Core in version 4.6
Core since version 3.2
Core ARB extension ARB_provoking_vertex

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

Function Definition

 void glProvokingVertex(GLenum provokeMode​);
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.

See Also

Category:Core API Ref Vertex Rendering‎

Copyright

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/.