Module pyglet.graphics.vertexdomain

Manage related vertex attributes within a single vertex domain.

A vertex "domain" consists of a set of attribute descriptions that together describe the layout of one or more vertex buffers which are used together to specify the vertices in a primitive. Additionally, the domain manages the buffers used to store the data and will resize them as necessary to accomodate new vertices.

Domains can optionally be indexed, in which case they also manage a buffer containing vertex indices. This buffer is grown separately and has no size relation to the attribute buffers.

Applications can create vertices (and optionally, indices) within a domain with the VertexDomain.create method. This returns a VertexList representing the list of vertices created. The vertex attribute data within the group can be modified, and the changes will be made to the underlying buffers automatically.

The entire domain can be efficiently drawn in one step with the VertexDomain.draw method, assuming all the vertices comprise primitives of the same OpenGL primitive mode.

Classes

  VertexDomain
Management of a set of vertex lists.
  VertexList
A list of vertices within a VertexDomain.
  IndexedVertexDomain
Management of a set of indexed vertex lists.
  IndexedVertexList
A list of vertices within an IndexedVertexDomain that are indexed.

Functions

  create_attribute_usage(format)
Create an attribute and usage pair from a format string.
VertexDomain create_domain(*attribute_usage_formats)
Create a vertex domain covering the given attribute usage formats.
VertexDomain create_indexed_domain(*attribute_usage_formats)
Create an indexed vertex domain covering the given attribute usage formats.

Function Details

create_attribute_usage

create_attribute_usage(format)

Create an attribute and usage pair from a format string. The format string is as documented in pyglet.graphics.vertexattribute, with the addition of an optional usage component:

usage ::= attribute ( '/' ('static' | 'dynamic' | 'stream' | 'none') )?

If the usage is not given it defaults to 'dynamic'. The usage corresponds to the OpenGL VBO usage hint, and for static also indicates a preference for interleaved arrays. If none is specified a buffer object is not created, and vertex data is stored in system memory.

Some examples:

v3f/stream
3D vertex position using floats, for stream usage
c4b/static
4-byte color attribute, for static usage
Returns:
attribute, usage

create_domain

create_domain(*attribute_usage_formats)
Create a vertex domain covering the given attribute usage formats. See documentation for create_attribute_usage and pyglet.graphics.vertexattribute.create_attribute for the grammar of these format strings.
Returns: VertexDomain

create_indexed_domain

create_indexed_domain(*attribute_usage_formats)
Create an indexed vertex domain covering the given attribute usage formats. See documentation for create_attribute_usage and pyglet.graphics.vertexattribute.create_attribute for the grammar of these format strings.
Returns: VertexDomain