Enum

VkPrimitiveTopology

Supported primitive topologies

The primitive topologies defined by VkPrimitiveTopology are:

typedef enum VkPrimitiveTopology {
    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
} VkPrimitiveTopology;

Each primitive topology, and its construction from a list of vertices, is described in detail below with a supporting diagram, according to the following key:

primitive topology key vertex
VertexA point in 3-dimensional space. Positions chosen within the diagrams are arbitrary and for illustration only.
primitive topology key vertex number
Vertex NumberSequence position of a vertex within the provided vertex data.
primitive topology key provoking vertex
Provoking VertexProvoking vertex within the main primitive. The tail is angled towards the relevant primitive. Used inflat shading.
primitive topology key edge
Primitive EdgeAn edge connecting the points of a main primitive.
primitive topology key adjacency edge
Adjacency EdgePoints connected by these lines do not contribute to a main primitive, and are only accessible in ageometry shader.
primitive topology key winding order
Winding OrderThe relative order in which vertices are defined within a primitive, used in thefacing determination. This ordering has no specific start or end point.

The diagrams are supported with mathematical definitions where the vertices (v) and primitives (p) are numbered starting from 0; v0 is the first vertex in the provided data and p0 is the first primitive in the set of primitives defined by the vertices and topology.