.. _vertexelements: Vertex Elements =============== This state controls the format of the input attributes contained in pipe_vertex_buffers. There is one pipe_vertex_element array member for each input attribute. Input Formats ------------- Gallium supports a diverse range of formats for vertex data. Drivers are guaranteed to support 32-bit floating-point vectors of one to four components. Additionally, they may support the following formats: * Integers, signed or unsigned, normalized or non-normalized, 8, 16, or 32 bits wide * Floating-point, 16, 32, or 64 bits wide At this time, support for varied vertex data formats is limited by driver deficiencies. It is planned to support a single uniform set of formats for all Gallium drivers at some point. Rather than attempt to specify every small nuance of behavior, Gallium uses a very simple set of rules for padding out unspecified components. If an input uses less than four components, it will be padded out with the constant vector ``(0, 0, 0, 1)``. Fog, point size, the facing bit, and edgeflags, all are in the standard format of ``(x, 0, 0, 1)``, and so only the first component of those inputs is used. Position %%%%%%%% Vertex position may be specified with two to four components. Using less than two components is not allowed. Colors %%%%%% Colors, both front- and back-facing, may omit the alpha component, only using three components. Using less than three components is not allowed. Members ------- src_offset The byte offset of the attribute in the buffer given by vertex_buffer_index for the first vertex. instance_divisor The instance data rate divisor, used for instancing. 0 means this is per-vertex data, n means per-instance data used for n consecutive instances (n > 0). vertex_buffer_index The vertex buffer this attribute lives in. Several attributes may live in the same vertex buffer. src_format The format of the attribute data. One of the PIPE_FORMAT tokens.