Attribute format strings
The format of a vertex attribute is specified by an attribute format string. The create_attribute() function, as well as other methods in the pyglet.graphics module, take format strings.
The following is the BNF syntax for format strings:
attribute ::= ( name | index 'g' 'n'? | texture 't' ) count type

You can also try this code with Online Python Compiler
Run Code
name It describes the vertex attribute. It is one of the following constants for the following predefined attributes:
- c - It represents the vertex color
- e - It represents the edge flag
- f - It depicts the fog coordinate
- n - It represents the normal vector
- s - It is the attribute for secondary color
- t - It depicts the texture coordinate
- v - It represents the vertex coordinate
You can also specify the index in decimal followed by the constant g to construct a generic indexed vertex attribute. For example, the generic vertex attribute with index 0 is specified by 0g. If the optional constant n is included after the g, Within the range of the data type, the property is normalised to the range [0, 1] or [-1, 1].
The texture number preceding the constant 't' can be used to specify texture coordinates for multiple texture units. The texture coordinate property for texture unit 1 is given by 1t. The attribute's number of data components. is given by count. A 3D vertex position, for example, has a count of three. Some properties limit the number of counts that can be utilised.
type specifies the data type of each attribute component. The types below can be used:
- b - GLbyte
- B - GLubyte
- s - GLshort
- S - GLushort
- i - GLint
- I - GLuint
- f - GLfloat
- d - GLdouble
Some features limit the data types that can be used; for example, normal vectors must employ a signed data type. While not unlawful, some data types may cause serious performance issues. The use of GLdouble, for example, is discouraged, and colors should be provided via GLubyte.
Within the format string, whitespace is not allowed.
Here are several examples:
- v3f - 3-float vertex position
- c4b - 4-byte color
- 1eb - The edge flag
- 0g3f - 3-float generic vertex attribute 0
- 1gn1i - normalised to [-1, 1] integer generic vertex attribute 1
- 2gn4B - [0, 1] normalised 4-byte generic vertex attribute 2 (because the type is unsigned)
- 3t2f - 2-float texture unit 3 texture coordinate
Let's have a detailed discussion on the various classes and methods of pyglet.graphics.vertexattribute.
classAbstractAttribute(count, gl_type)
It is an attribute in a mapped buffer for an abstract accessor.
enable()
Enable the attribute using glEnableClientState.
get_region(buffer, start, count)
It is used as an accessor to map a buffer zone.
As if the buffer were a contiguous array of this property, the returned region can be edited (though it may actually be interleaved or otherwise non-contiguous). A contiguous array of component data pieces makes up the returned region. For example, if this property utilises three floats per vertex and the count option is four, the total number of floats mapped will be three times four or twelve.
Parameters:
- buffer (AbstractMappable) – The buffer to map.
- start (int) – This is the offset of the first vertex to the map.
- count (int) – It represents the number of vertices to map
Return type:
AbstractBufferRegion
set_pointer(offset)
Set this attribute to the currently bound buffer at the offset specified.
The ptr member of the presently bound buffer should be used to calculate the offset.
Parameters:
- offset (int) – This attribute's pointer offset is to the currently bound buffer.
set_region(buffer, start, count, data)
It sets the data across a buffer region.
Parameters:
- buffer (AbstractMappable) – The buffer to modify.
- start (int) – This is the offset of the first vertex to the map.
- count (int) – It represents the number of vertices to map
- data (sequence) – Sequence of data components.
classColorAttribute(count, gl_type)
It is the color vertex attribute.
enable()
It enables the attribute using glEnableClientState.
set_pointer(pointer)
It refers to the attribute to the currently bound buffer at the specified offset. The ptr member of the presently bound buffer should be used to calculate the offset.
Parameters:
- offset (int) – It represents the pointer offset to the currently bound buffer for this attribute.
plural= 'colors'
classEdgeFlagAttribute(gl_type)
It is the edge flag attribute.
enable()
It enables the attribute using glEnableClientState.
set_pointer(pointer)
Set this attribute to the currently bound buffer at the offset specified.
The ptr member of the presently bound buffer should be used to calculate the offset.
Parameters:
- offset (int) – It represents the pointer offset to the currently bound buffer for this attribute.
plural= 'edge_flags'
classFogCoordAttribute(count, gl_type)
The fog coordinate attribute.
enable()
glEnableClientState is used to enable the attribute.
set_pointer(pointer)
Set this attribute to the currently bound buffer at the offset specified.
The ptr member of the presently bound buffer should be used to calculate the offset.
Parameters:
- offset (int) – It represents the pointer offset to the currently bound buffer for this attribute.
plural= 'fog_coords'
classGenericAttribute(index, normalized, count, gl_type)
It is the Generic vertex attribute that is used by shader programs.
enable()
Enable the attribute using glEnableClientState.
set_pointer(pointer)
Set this attribute to the offset of the currently bound buffer.
The current bound buffer's ptr member should be used as the offset.
Parameters:
- offset (int) – It represents the pointer offset to the currently bound buffer for this attribute.
classMultiTexCoordAttribute(texture, count, gl_type)
The Texture coordinate attribute.
enable()
Enable the attribute using glEnableClientState.
set_pointer(pointer)
Set this attribute to the currently bound buffer offset.
The offset member of the presently bound buffer should be used.
Parameters:
- offset (int) – It represents the pointer offset to the currently bound buffer for this attribute.
classNormalAttribute(gl_type)
The Normal vector attribute.
enable()
Enable the attribute using glEnableClientState.
set_pointer(pointer)
Set this attribute to the currently bound buffer at the offset specified.
The ptr member of the presently bound buffer should be used to calculate offset.
Parameters:
- offset (int) – It represents the pointer offset to the currently bound buffer for this attribute.
plural= 'normals'
classSecondaryColorAttribute(gl_type)
Secondary color attribute.
enable()
It enables the attribute using glEnableClientState.
set_pointer(pointer)
Set this attribute to the currently bound buffer at the offset specified.
The ptr member of the presently bound buffer should be used to calculate the offset.
Parameters:
- offset (int) – It represents the pointer offset to the currently bound buffer for this attribute.
plural= 'secondary_colors'
classTexCoordAttribute(count, gl_type)
The Texture coordinate attribute.
convert_to_multi_tex_coord_attribute()
The attribute's class is changed to MultiTexCoordAttribute.
enable()
It enables the attribute using glEnableClientState.
set_pointer(pointer)
Set this attribute to the currently bound buffer at the offset specified.
The ptr member of the presently bound buffer should be used to calculate offset.
Parameters:
- offset (int) – It represents the pointer offset to the currently bound buffer for this attribute.
plural= 'tex_coords'
classVertexAttribute(count, gl_type)
The Vertex coordinates attribute.
enable()
It enables the attribute using glEnableClientState.
set_pointer(pointer)
Set this attribute to the currently bound buffer at the offset specified.
The ptr member of the presently bound buffer should be used to calculate the offset.
Parameters:
- offset (int) – It represents the pointer offset to the currently bound buffer for this attribute.
plural= 'vertices'
create_attribute(format)
From a format string, create a vertex attribute description.
The attribute's initial stride and offset will be 0.
Parameters:
- format (str) – Attribute format string. See the module summary for details.
Return type: AbstractAttribute
interleave_attributes(attributes)
The Interleave attribute offsets. The offsets and strides of the specified attributes are adjusted so that they are interleaved. The constraints on alignment are respected.
Parameters:
- attributes (sequence of AbstractAttribute) – Attributes to interleave in-place.
serialize_attributes(count, attributes)
Attribute offsets are serialised. For count vertices, adjust the offsets of the specified characteristics so that they are packed serially against one other.
Parameters:
- count (int) – Number of vertices.
- attributes (sequence of AbstractAttribute) – Attributes to serialize in-place.
Frequently Asked Questions
What is a pyglet?
Pyglet is a Python library that provides an object-oriented application programming interface for the development of games and other multimedia applications.
How is an attribute accessor created?
An attribute accessor can be created from a basic format string with create_ attribute().
What is the use of enable()?
It is used to enable the attribute using glEnableClientState
What is the use of set_pointer()?
It is used to set the attribute to the currently bound buffer at the offset specified.
Conclusion
In this article, we have extensively discussed pyglet.graphics.vertexattribute module. The article explains the details of various classes of pyglet.graphics.vertexattribute, and details of its predefined functions.
We hope that this blog has helped you enhance your knowledge regarding pyglet.graphics.vertexattribute, and if you would like to learn more, check out our articles on pyglet. You can refer to our guided paths on the Coding Ninjas Studio platform to learn more about DSA, DBMS, Competitive Programming, Python, Java, JavaScript, etc. To practice and improve yourself in the interview, you can also check out Top 100 SQL problems, Interview experience, Coding interview questions, and the Ultimate guide path for interviews.
Do upvote our blog to help other ninjas grow.
Happy Coding!!