GeomVertexArrayData

from panda3d.core import GeomVertexArrayData
class GeomVertexArrayData

Bases: CopyOnWriteObject, SimpleLruPage, GeomEnums

This is the data for one array of a GeomVertexData structure. Many GeomVertexData structures will only define one array, with all data elements interleaved (DirectX 8.0 and before insisted on this format); some will define multiple arrays.

DirectX calls this concept of one array a “stream”. It also closely correlates with the concept of a vertex buffer.

This object is just a block of data. In general, you should not be directly messing with this object from application code. See GeomVertexData for the organizing structure, and see GeomVertexReader/Writer/Rewriter for high-level tools to manipulate the actual vertex data.

Inheritance diagram

Inheritance diagram of GeomVertexArrayData

__init__(*args, **kwargs)
array_format
clearRows()

C++ Interface: clear_rows(const GeomVertexArrayData self)

/**
  • Removes all of the rows in the array. Functionally equivalent to

  • set_num_rows(0).

*/

clear_rows()

C++ Interface: clear_rows(const GeomVertexArrayData self)

/**
  • Removes all of the rows in the array. Functionally equivalent to

  • set_num_rows(0).

*/

compareTo()

C++ Interface: compare_to(GeomVertexArrayData self, const GeomVertexArrayData other)

/**
  • Returns 0 if the two arrays are equivalent, even if they are not the same

  • pointer.

*/

compare_to()

C++ Interface: compare_to(GeomVertexArrayData self, const GeomVertexArrayData other)

/**
  • Returns 0 if the two arrays are equivalent, even if they are not the same

  • pointer.

*/

data_size_bytes
getArrayFormat()

C++ Interface: get_array_format(GeomVertexArrayData self)

/**
  • Returns the format object that describes this array.

*/

getBook()

C++ Interface: get_book()

/**
  • Returns the global VertexDataBook that will be used to allocate vertex data

  • buffers.

*/

getClassType()

C++ Interface: get_class_type()

getDataSizeBytes()

C++ Interface: get_data_size_bytes(GeomVertexArrayData self)

/**
  • Returns the number of bytes stored in the array.

*/

getHandle()

C++ Interface: get_handle(GeomVertexArrayData self, Thread current_thread)

/**
  • Returns an object that can be used to read the actual data bytes stored in

  • the array. Calling this method locks the data, and will block any other

  • threads attempting to read or write the data, until the returned object

  • destructs.

*/

getIndependentLru()

C++ Interface: get_independent_lru()

/**
  • Returns a pointer to the global LRU object that manages the

  • GeomVertexArrayData’s that have not (yet) been paged out.

*/

getModified()

C++ Interface: get_modified(GeomVertexArrayData self)

/**
  • Returns a sequence number which is guaranteed to change at least every time

  • the array vertex data is modified.

*/

getNumRows()

C++ Interface: get_num_rows(GeomVertexArrayData self)

/**
  • Returns the number of rows stored in the array, based on the number of

  • bytes and the stride. This should be the same for all arrays within a

  • given GeomVertexData object.

*/

getSmallLru()

C++ Interface: get_small_lru()

/**
  • Returns a pointer to the global LRU object that manages the

  • GeomVertexArrayData’s that are deemed too small to be paged out.

*/

getUsageHint()

C++ Interface: get_usage_hint(GeomVertexArrayData self)

/**
  • Returns the usage hint that describes to the rendering backend how often

  • the vertex data will be modified and/or rendered. See geomEnums.h.

*/

get_array_format()

C++ Interface: get_array_format(GeomVertexArrayData self)

/**
  • Returns the format object that describes this array.

*/

get_book()

C++ Interface: get_book()

/**
  • Returns the global VertexDataBook that will be used to allocate vertex data

  • buffers.

*/

get_class_type()

C++ Interface: get_class_type()

get_data_size_bytes()

C++ Interface: get_data_size_bytes(GeomVertexArrayData self)

/**
  • Returns the number of bytes stored in the array.

*/

get_handle()

C++ Interface: get_handle(GeomVertexArrayData self, Thread current_thread)

/**
  • Returns an object that can be used to read the actual data bytes stored in

  • the array. Calling this method locks the data, and will block any other

  • threads attempting to read or write the data, until the returned object

  • destructs.

*/

get_independent_lru()

C++ Interface: get_independent_lru()

/**
  • Returns a pointer to the global LRU object that manages the

  • GeomVertexArrayData’s that have not (yet) been paged out.

*/

get_modified()

C++ Interface: get_modified(GeomVertexArrayData self)

/**
  • Returns a sequence number which is guaranteed to change at least every time

  • the array vertex data is modified.

*/

get_num_rows()

C++ Interface: get_num_rows(GeomVertexArrayData self)

/**
  • Returns the number of rows stored in the array, based on the number of

  • bytes and the stride. This should be the same for all arrays within a

  • given GeomVertexData object.

*/

get_small_lru()

C++ Interface: get_small_lru()

/**
  • Returns a pointer to the global LRU object that manages the

  • GeomVertexArrayData’s that are deemed too small to be paged out.

*/

get_usage_hint()

C++ Interface: get_usage_hint(GeomVertexArrayData self)

/**
  • Returns the usage hint that describes to the rendering backend how often

  • the vertex data will be modified and/or rendered. See geomEnums.h.

*/

hasColumn()

C++ Interface: has_column(GeomVertexArrayData self, const InternalName name)

/**
  • Returns true if the array has the named column, false otherwise. This is

  • really just a shortcut for asking the same thing from the format.

*/

has_column()

C++ Interface: has_column(GeomVertexArrayData self, const InternalName name)

/**
  • Returns true if the array has the named column, false otherwise. This is

  • really just a shortcut for asking the same thing from the format.

*/

isPrepared()

C++ Interface: is_prepared(GeomVertexArrayData self, PreparedGraphicsObjects prepared_objects)

/**
  • Returns true if the data has already been prepared or enqueued for

  • preparation on the indicated GSG, false otherwise.

*/

is_prepared()

C++ Interface: is_prepared(GeomVertexArrayData self, PreparedGraphicsObjects prepared_objects)

/**
  • Returns true if the data has already been prepared or enqueued for

  • preparation on the indicated GSG, false otherwise.

*/

lruEpoch()

C++ Interface: lru_epoch()

/**
  • Marks that an epoch has passed in each LRU. Asks the LRU’s to consider

  • whether they should perform evictions.

*/

lru_epoch()

C++ Interface: lru_epoch()

/**
  • Marks that an epoch has passed in each LRU. Asks the LRU’s to consider

  • whether they should perform evictions.

*/

modified
modifyHandle()

C++ Interface: modify_handle(const GeomVertexArrayData self, Thread current_thread)

/**
  • Returns an object that can be used to read or write the actual data bytes

  • stored in the array. Calling this method locks the data, and will block

  • any other threads attempting to read or write the data, until the returned

  • object destructs.

*/

modify_handle()

C++ Interface: modify_handle(const GeomVertexArrayData self, Thread current_thread)

/**
  • Returns an object that can be used to read or write the actual data bytes

  • stored in the array. Calling this method locks the data, and will block

  • any other threads attempting to read or write the data, until the returned

  • object destructs.

*/

output()

C++ Interface: output(GeomVertexArrayData self, ostream out)

/**

*/

prepare()

C++ Interface: prepare(const GeomVertexArrayData self, PreparedGraphicsObjects prepared_objects)

/**
  • Indicates that the data should be enqueued to be prepared in the indicated

  • prepared_objects at the beginning of the next frame. This will ensure the

  • data is already loaded into the GSG if it is expected to be rendered soon.

  • Use this function instead of prepare_now() to preload datas from a user

  • interface standpoint.

*/

prepareNow()

C++ Interface: prepare_now(const GeomVertexArrayData self, PreparedGraphicsObjects prepared_objects, GraphicsStateGuardianBase gsg)

/**
  • Creates a context for the data on the particular GSG, if it does not

  • already exist. Returns the new (or old) VertexBufferContext. This assumes

  • that the GraphicsStateGuardian is the currently active rendering context

  • and that it is ready to accept new datas. If this is not necessarily the

  • case, you should use prepare() instead.

  • Normally, this is not called directly except by the GraphicsStateGuardian;

  • a data does not need to be explicitly prepared by the user before it may be

  • rendered.

*/

prepare_now()

C++ Interface: prepare_now(const GeomVertexArrayData self, PreparedGraphicsObjects prepared_objects, GraphicsStateGuardianBase gsg)

/**
  • Creates a context for the data on the particular GSG, if it does not

  • already exist. Returns the new (or old) VertexBufferContext. This assumes

  • that the GraphicsStateGuardian is the currently active rendering context

  • and that it is ready to accept new datas. If this is not necessarily the

  • case, you should use prepare() instead.

  • Normally, this is not called directly except by the GraphicsStateGuardian;

  • a data does not need to be explicitly prepared by the user before it may be

  • rendered.

*/

release()

C++ Interface: release(const GeomVertexArrayData self, PreparedGraphicsObjects prepared_objects)

/**
  • Frees the data context only on the indicated object, if it exists there.

  • Returns true if it was released, false if it had not been prepared.

*/

releaseAll()

C++ Interface: release_all(const GeomVertexArrayData self)

/**
  • Frees the context allocated on all objects for which the data has been

  • declared. Returns the number of contexts which have been freed.

*/

release_all()

C++ Interface: release_all(const GeomVertexArrayData self)

/**
  • Frees the context allocated on all objects for which the data has been

  • declared. Returns the number of contexts which have been freed.

*/

requestResident()

C++ Interface: request_resident(GeomVertexArrayData self, Thread current_thread)

/**
  • Returns true if the vertex data is currently resident in memory. If this

  • returns true, the next call to get_handle()->get_read_pointer() will

  • probably not block. If this returns false, the vertex data will be brought

  • back into memory shortly; try again later.

*/

request_resident()

C++ Interface: request_resident(GeomVertexArrayData self, Thread current_thread)

/**
  • Returns true if the vertex data is currently resident in memory. If this

  • returns true, the next call to get_handle()->get_read_pointer() will

  • probably not block. If this returns false, the vertex data will be brought

  • back into memory shortly; try again later.

*/

reserveNumRows()

C++ Interface: reserve_num_rows(const GeomVertexArrayData self, int n)

/**
  • This ensures that enough memory space for n rows is allocated, so that you

  • may increase the number of rows to n without causing a new memory

  • allocation. This is a performance optimization only; it is especially

  • useful when you know ahead of time that you will be adding n rows to the

  • data.

*/

reserve_num_rows()

C++ Interface: reserve_num_rows(const GeomVertexArrayData self, int n)

/**
  • This ensures that enough memory space for n rows is allocated, so that you

  • may increase the number of rows to n without causing a new memory

  • allocation. This is a performance optimization only; it is especially

  • useful when you know ahead of time that you will be adding n rows to the

  • data.

*/

setNumRows()

C++ Interface: set_num_rows(const GeomVertexArrayData self, int n)

/**
  • Sets the length of the array to n rows.

  • Normally, you would not call this directly, since all of the arrays in a

  • particular GeomVertexData must have the same number of rows; instead, call

  • GeomVertexData::set_num_rows().

  • The return value is true if the number of rows was changed, false if the

  • object already contained n rows (or if there was some error).

  • The new vertex data is initialized to 0, including the “color” column (but

  • see GeomVertexData::set_num_rows()).

  • Don’t call this in a downstream thread unless you don’t mind it blowing

  • away other changes you might have recently made in an upstream thread.

*/

setUsageHint()

C++ Interface: set_usage_hint(const GeomVertexArrayData self, int usage_hint)

/**
  • Changes the UsageHint hint for this array. See get_usage_hint().

  • Don’t call this in a downstream thread unless you don’t mind it blowing

  • away other changes you might have recently made in an upstream thread.

*/

set_num_rows()

C++ Interface: set_num_rows(const GeomVertexArrayData self, int n)

/**
  • Sets the length of the array to n rows.

  • Normally, you would not call this directly, since all of the arrays in a

  • particular GeomVertexData must have the same number of rows; instead, call

  • GeomVertexData::set_num_rows().

  • The return value is true if the number of rows was changed, false if the

  • object already contained n rows (or if there was some error).

  • The new vertex data is initialized to 0, including the “color” column (but

  • see GeomVertexData::set_num_rows()).

  • Don’t call this in a downstream thread unless you don’t mind it blowing

  • away other changes you might have recently made in an upstream thread.

*/

set_usage_hint()

C++ Interface: set_usage_hint(const GeomVertexArrayData self, int usage_hint)

/**
  • Changes the UsageHint hint for this array. See get_usage_hint().

  • Don’t call this in a downstream thread unless you don’t mind it blowing

  • away other changes you might have recently made in an upstream thread.

*/

uncleanSetNumRows()

C++ Interface: unclean_set_num_rows(const GeomVertexArrayData self, int n)

/**
  • This method behaves like set_num_rows(), except the new data is not

  • initialized. Furthermore, after this call, any of the data in the

  • GeomVertexArrayData may be uninitialized, including the earlier rows.

  • Normally, you would not call this directly, since all of the arrays in a

  • particular GeomVertexData must have the same number of rows; instead, call

  • GeomVertexData::unclean_set_num_rows().

*/

unclean_set_num_rows()

C++ Interface: unclean_set_num_rows(const GeomVertexArrayData self, int n)

/**
  • This method behaves like set_num_rows(), except the new data is not

  • initialized. Furthermore, after this call, any of the data in the

  • GeomVertexArrayData may be uninitialized, including the earlier rows.

  • Normally, you would not call this directly, since all of the arrays in a

  • particular GeomVertexData must have the same number of rows; instead, call

  • GeomVertexData::unclean_set_num_rows().

*/

upcastToCopyOnWriteObject()

C++ Interface: upcast_to_CopyOnWriteObject(const GeomVertexArrayData self)

upcast from GeomVertexArrayData to CopyOnWriteObject

upcastToGeomEnums()

C++ Interface: upcast_to_GeomEnums(const GeomVertexArrayData self)

upcast from GeomVertexArrayData to GeomEnums

upcastToSimpleLruPage()

C++ Interface: upcast_to_SimpleLruPage(const GeomVertexArrayData self)

upcast from GeomVertexArrayData to SimpleLruPage

upcast_to_CopyOnWriteObject()

C++ Interface: upcast_to_CopyOnWriteObject(const GeomVertexArrayData self)

upcast from GeomVertexArrayData to CopyOnWriteObject

upcast_to_GeomEnums()

C++ Interface: upcast_to_GeomEnums(const GeomVertexArrayData self)

upcast from GeomVertexArrayData to GeomEnums

upcast_to_SimpleLruPage()

C++ Interface: upcast_to_SimpleLruPage(const GeomVertexArrayData self)

upcast from GeomVertexArrayData to SimpleLruPage

usage_hint
write()

C++ Interface: write(GeomVertexArrayData self, ostream out, int indent_level)

/**

*/