GeomVertexColumn

class GeomVertexColumn

Bases: GeomEnums

This defines how a single column is interleaved within a vertex array stored within a Geom. The GeomVertexArrayFormat class maintains a list of these to completely define a particular array structure.

Inheritance diagram

Inheritance diagram of GeomVertexColumn

explicit GeomVertexColumn(CPT_InternalName name, int num_components, GeomEnums::NumericType numeric_type, GeomEnums::Contents contents, int start, int column_alignment = 0, int num_elements = 0, int element_stride = 0)
GeomVertexColumn(GeomVertexColumn const &copy)

Creates an invalid column. Used only when constructing from a bam file.

int get_column_alignment(void) const

Returns the alignment requirements for this column. If this is greater than 1, it restricts the column to appear only on memory addresses that are integer multiples of this value; this has implications for this column’s start value, as well as the stride of the resulting array.

int get_component_bytes(void) const

Returns the number of bytes used by each component (that is, by one element of the numeric type).

GeomEnums::Contents get_contents(void) const

Returns the token representing the semantic meaning of the stored value.

int get_element_stride(void) const

This value is only relevant for matrix types. Returns the number of bytes to add to access the next row of the matrix.

InternalName const *get_name(void) const

Returns the name of this particular data field, e.g. “vertex” or “normal”. The name may be a user-defined string, or it may be one of the standard system-defined field types. Only the system-defined field types are used for the actual rendering.

int get_num_components(void) const

Returns the number of components of the column: the number of instances of the NumericType in each element. This is usually, but not always, the same thing as get_num_values().

int get_num_elements(void) const

Returns the number of times this column is repeated. This is usually 1, except for matrices.

int get_num_values(void) const

Returns the number of numeric values of the column: the number of distinct numeric values that go into each element. This is usually, but not always, the same thing as get_num_components(); the difference is in the case of a composite numeric type like NT_packed_dcba, which has four numeric values per component.

GeomEnums::NumericType get_numeric_type(void) const

Returns the token representing the numeric type of the data storage.

int get_start(void) const

Returns the byte within the array record at which this column starts. This can be set to non-zero to implement interleaved arrays.

int get_total_bytes(void) const

Returns the number of bytes used by each element of the column: component_bytes * num_components.

bool has_homogeneous_coord(void) const

Returns true if this Contents type is one that includes a homogeneous coordinate in the fourth component, or false otherwise. If this is true, correct operation on the vertex data may require scaling by the homogeneous coordinate from time to time (but in general this is handled automatically if you use the 3-component or smaller forms of get_data() and set_data()).

bool is_bytewise_equivalent(GeomVertexColumn const &other) const

Returns true if the data store of this column is exactly the same as that of the other, irrespective of name or start position within the record.

void output(std::ostream &out) const
bool overlaps_with(int start_byte, int num_bytes) const

Returns true if this column overlaps with any of the bytes in the indicated range, false if it does not.

void set_column_alignment(int column_alignment)

Changes the column alignment of an existing column. This is only legal on an unregistered format (i.e. when constructing the format initially).

void set_contents(GeomEnums::Contents contents)

Changes the semantic meaning of an existing column. This is only legal on an unregistered format (i.e. when constructing the format initially).

void set_name(InternalName *name)

Replaces the name of an existing column. This is only legal on an unregistered format (i.e. when constructing the format initially).

void set_num_components(int num_components)

Changes the number of components of an existing column. This is only legal on an unregistered format (i.e. when constructing the format initially).

void set_numeric_type(GeomEnums::NumericType numeric_type)

Changes the numeric type an existing column. This is only legal on an unregistered format (i.e. when constructing the format initially).

void set_start(int start)

Changes the start byte of an existing column. This is only legal on an unregistered format (i.e. when constructing the format initially).