Panda3D
Public Member Functions | Static Public Member Functions | List of all members
GeomVertexArrayDataHandle Class Reference

This data object is returned by GeomVertexArrayData::get_handle() or modify_handle(). As long as it exists, the data is locked; when the last of these destructs, the data is unlocked. More...

Inheritance diagram for GeomVertexArrayDataHandle:
ReferenceCount GeomEnums MemoryBase

Public Member Functions

 clearRows ()
 
 copyDataFrom (const GeomVertexArrayDataHandle other)
 Copies the entire data array from the other object. More...
 
 copyDataFrom (object buffer)
 
 copySubdataFrom (size_t to_start, size_t to_size, const GeomVertexArrayDataHandle other, size_t from_start, size_t from_size)
 Copies a portion of the data array from the other object into a portion of the data array of this object. If to_size != from_size, the size of this data array is adjusted accordingly. More...
 
 copySubdataFrom (size_t to_start, size_t to_size, object buffer)
 
 copySubdataFrom (size_t to_start, size_t to_size, object buffer, size_t from_start, size_t from_size)
 
const GeomVertexArrayFormat getArrayFormat ()
 
str getData ()
 Returns the entire raw data of the GeomVertexArrayData object, formatted as a string. This is primarily for the benefit of high-level languages such as Python. More...
 
int getDataSizeBytes ()
 
UpdateSeq getModified ()
 
int getNumRows ()
 
GeomVertexArrayData getObject ()
 
const GeomVertexArrayData getObject ()
 
str getSubdata (size_t start, size_t size)
 Returns a subset of the raw data of the GeomVertexArrayData object, formatted as a string. This is primarily for the benefit of high-level languages such as Python. More...
 
GeomEnums::UsageHint getUsageHint ()
 
 markUsed ()
 Marks the array data recently-used. More...
 
VertexBufferContext prepareNow (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. More...
 
bool requestResident ()
 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. More...
 
bool reserveNumRows (int n)
 
 setData (str data)
 Replaces the entire raw data array with the contents of the indicated string. This is primarily for the benefit of high-level languages like Python. More...
 
bool setNumRows (int n)
 
 setSubdata (size_t start, size_t size, str data)
 Replaces a portion of the data array from the indicated string. If size != data.size(), the size of this data array is adjusted accordingly. More...
 
bool uncleanSetNumRows (int n)
 
- Public Member Functions inherited from ReferenceCount
int getRefCount ()
 Returns the current reference count. More...
 
 ref ()
 Explicitly increments the reference count. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. More...
 
bool testRefCountIntegrity ()
 Does some easy checks to make sure that the reference count isn't completely bogus. Returns true if ok, false otherwise. More...
 
bool testRefCountNonzero ()
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus. Returns true if ok, false otherwise. More...
 
bool unref ()
 Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic.) However, see the helper function unref_delete(). More...
 

Static Public Member Functions

static TypeHandle getClassType ()
 
- Static Public Member Functions inherited from ReferenceCount
static TypeHandle getClassType ()
 

Additional Inherited Members

- Public Types inherited from GeomEnums
enum  AnimationType { AT_none = 0, AT_panda = 1, AT_hardware = 2 }
 The type of animation data that is represented by a particular GeomVertexFormat. More...
 
enum  Contents {
  C_other = 0, C_point = 1, C_clip_point = 2, C_vector = 3,
  C_texcoord = 4, C_color = 5, C_index = 6, C_morph_delta = 7,
  C_matrix = 8, C_normal = 9
}
 The contents determine the semantic meaning of a numeric value within the vertex data. This is also used to determine what automatic transforms might be applied to the various columns. More...
 
enum  GeomRendering {
  GR_indexed_point = 1, GR_indexed_other = 65536, GR_indexed_bits = 65537, GR_point = 2,
  GR_point_uniform_size = 4, GR_per_point_size = 8, GR_point_perspective = 16, GR_point_aspect_ratio = 32,
  GR_point_scale = 64, GR_point_rotate = 128, GR_point_sprite = 256, GR_point_sprite_tex_matrix = 512,
  GR_point_bits = 1022, GR_triangle_strip = 1024, GR_triangle_fan = 2048, GR_line_strip = 4096,
  GR_composite_bits = 7168, GR_strip_cut_index = 131072, GR_flat_first_vertex = 8192, GR_flat_last_vertex = 16384,
  GR_shade_model_bits = 24576
}
 This type specifies a number of bits that are used to represent the rendering requirements of a particular Geom, as well as the rendering capabilities of the GSG. The difference between the two indicates whether the Geom needs to be munged for the GSG. More...
 
enum  NumericType {
  NT_uint8 = 0, NT_uint16 = 1, NT_uint32 = 2, NT_packed_dcba = 3,
  NT_packed_dabc = 4, NT_float32 = 5, NT_float64 = 6, NT_stdfloat = 7
}
 The numeric type determines what physical representation is used to encode a numeric value within the vertex data. More...
 
enum  PrimitiveType {
  PT_none = 0, PT_polygons = 1, PT_lines = 2, PT_points = 3,
  PT_patches = 4
}
 The primitive type represents the core primitive type of a particular GeomPrimitive. It's used for determining what kind of antialiasing should be enabled. More...
 
enum  ShadeModel { SM_uniform = 0, SM_smooth = 1, SM_flat_first_vertex = 2, SM_flat_last_vertex = 3 }
 The shade model specifies whether the per-vertex colors and normals indexed by a given primitive truly represent per-vertex colors and normals, or whether they actually represent per-triangle flat-shaded colors and normals. More...
 
enum  UsageHint {
  UH_client = 0, UH_stream = 1, UH_dynamic = 2, UH_static = 3,
  UH_unspecified = 4
}
 

Detailed Description

This data object is returned by GeomVertexArrayData::get_handle() or modify_handle(). As long as it exists, the data is locked; when the last of these destructs, the data is unlocked.

Only one thread at a time may lock the data; other threads attempting to lock the data will block. A given thread may simultaneously lock the data multiple times.

This class serves in lieu of a pair of GeomVertexArrayDataPipelineReader and GeomVertexArrayDataPipelineWriter classes

Member Function Documentation

◆ clearRows()

clearRows ( )

◆ copyDataFrom() [1/2]

copyDataFrom ( const GeomVertexArrayDataHandle  other)

Copies the entire data array from the other object.

◆ copyDataFrom() [2/2]

copyDataFrom ( object  buffer)

◆ copySubdataFrom() [1/3]

copySubdataFrom ( size_t  to_start,
size_t  to_size,
const GeomVertexArrayDataHandle  other,
size_t  from_start,
size_t  from_size 
)

Copies a portion of the data array from the other object into a portion of the data array of this object. If to_size != from_size, the size of this data array is adjusted accordingly.

◆ copySubdataFrom() [2/3]

copySubdataFrom ( size_t  to_start,
size_t  to_size,
object  buffer 
)

◆ copySubdataFrom() [3/3]

copySubdataFrom ( size_t  to_start,
size_t  to_size,
object  buffer,
size_t  from_start,
size_t  from_size 
)

◆ getArrayFormat()

const GeomVertexArrayFormat getArrayFormat ( )

◆ getClassType()

static TypeHandle getClassType ( )
static

◆ getData()

str getData ( )

Returns the entire raw data of the GeomVertexArrayData object, formatted as a string. This is primarily for the benefit of high-level languages such as Python.

◆ getDataSizeBytes()

int getDataSizeBytes ( )

◆ getModified()

UpdateSeq getModified ( )

◆ getNumRows()

int getNumRows ( )

◆ getObject() [1/2]

GeomVertexArrayData getObject ( )

◆ getObject() [2/2]

const GeomVertexArrayData getObject ( )

◆ getSubdata()

str getSubdata ( size_t  start,
size_t  size 
)

Returns a subset of the raw data of the GeomVertexArrayData object, formatted as a string. This is primarily for the benefit of high-level languages such as Python.

◆ getUsageHint()

GeomEnums::UsageHint getUsageHint ( )

◆ markUsed()

markUsed ( )

Marks the array data recently-used.

◆ prepareNow()

VertexBufferContext prepareNow ( 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.

◆ requestResident()

bool requestResident ( )

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()

bool reserveNumRows ( int  n)

◆ setData()

setData ( str  data)

Replaces the entire raw data array with the contents of the indicated string. This is primarily for the benefit of high-level languages like Python.

◆ setNumRows()

bool setNumRows ( int  n)

◆ setSubdata()

setSubdata ( size_t  start,
size_t  size,
str  data 
)

Replaces a portion of the data array from the indicated string. If size != data.size(), the size of this data array is adjusted accordingly.

This is primarily for the benefit of high-level languages like Python.

◆ uncleanSetNumRows()

bool uncleanSetNumRows ( int  n)