Panda3D
Public Types | Public Member Functions

GeomVertexWriter Class Reference

This object provides a high-level interface for quickly writing a sequence of numeric values from a vertex table. More...

Inheritance diagram for GeomVertexWriter:
GeomEnums GeomVertexRewriter

List of all members.

Public Types

enum  AnimationType { ATNone = 0, ATPanda = 1, ATHardware = 2 }
enum  Contents {
  COther = 0, CPoint = 1, CClipPoint = 2, CVector = 3,
  CTexcoord = 4, CColor = 5, CIndex = 6, CMorphDelta = 7
}
enum  GeomRendering {
  GRIndexedPoint = 1, GRIndexedOther = 65536, GRIndexedBits = 65537, GRPoint = 2,
  GRPointUniformSize = 4, GRPerPointSize = 8, GRPointPerspective = 16, GRPointAspectRatio = 32,
  GRPointScale = 64, GRPointRotate = 128, GRPointSprite = 256, GRPointSpriteTexMatrix = 512,
  GRPointBits = 1022, GRTriangleStrip = 1024, GRTriangleFan = 2048, GRLineStrip = 4096,
  GRCompositeBits = 7168, GRFlatFirstVertex = 8192, GRFlatLastVertex = 16384, GRShadeModelBits = 24576,
  GRTexcoordLightVector = 32768
}
enum  NumericType {
  NTUint8 = 0, NTUint16 = 1, NTUint32 = 2, NTPackedDcba = 3,
  NTPackedDabc = 4, NTFloat32 = 5
}
enum  PrimitiveType { PTNone = 0, PTPolygons = 1, PTLines = 2, PTPoints = 3 }
enum  ShadeModel { SMUniform = 0, SMSmooth = 1, SMFlatFirstVertex = 2, SMFlatLastVertex = 3 }
enum  UsageHint {
  UHClient = 0, UHStream = 1, UHDynamic = 2, UHStatic = 3,
  UHUnspecified = 4
}

Public Member Functions

 GeomVertexWriter (GeomVertexArrayData array_data, Thread current_thread)
 Constructs a new writer to process the vertices of the indicated array only.
 GeomVertexWriter (GeomVertexArrayData array_data)
 Constructs a new writer to process the vertices of the indicated array only.
 GeomVertexWriter (GeomVertexArrayData array_data, int column)
 Constructs a new writer to process the vertices of the indicated array only.
 GeomVertexWriter (GeomVertexData vertex_data)
 Constructs a new writer to process the vertices of the indicated data object.
 GeomVertexWriter (GeomVertexData vertex_data, string name, Thread current_thread)
 Constructs a new writer to process the vertices of the indicated data object.
 GeomVertexWriter (GeomVertexData vertex_data, InternalName const name, Thread current_thread)
 Constructs a new writer to process the vertices of the indicated data object.
 GeomVertexWriter (GeomVertexData vertex_data, string name)
 Constructs a new writer to process the vertices of the indicated data object.
 GeomVertexWriter (GeomVertexWriter const copy)
 GeomVertexWriter (GeomVertexArrayData array_data, int column, Thread current_thread)
 Constructs a new writer to process the vertices of the indicated array only.
 GeomVertexWriter (GeomVertexData vertex_data, InternalName const name)
 Constructs a new writer to process the vertices of the indicated data object.
 GeomVertexWriter (Thread current_thread)
 Constructs an invalid GeomVertexWriter.
 GeomVertexWriter ()
 Constructs an invalid GeomVertexWriter.
 GeomVertexWriter (GeomVertexData vertex_data, Thread current_thread)
 Constructs a new writer to process the vertices of the indicated data object.
 addData1f (float data)
 Sets the write row to a particular 1-component value, and advances the write row.
 addData1i (int data)
 Sets the write row to a particular 1-component value, and advances the write row.
 addData2f (VBase2 const data)
 Sets the write row to a particular 2-component value, and advances the write row.
 addData2f (float x, float y)
 Sets the write row to a particular 2-component value, and advances the write row.
 addData2i (int a, int b)
 Sets the write row to a particular 2-component value, and advances the write row.
 addData3f (VBase3 const data)
 Sets the write row to a particular 3-component value, and advances the write row.
 addData3f (float x, float y, float z)
 Sets the write row to a particular 3-component value, and advances the write row.
 addData3i (int a, int b, int c)
 Sets the write row to a particular 3-component value, and advances the write row.
 addData4f (float x, float y, float z, float w)
 Sets the write row to a particular 4-component value, and advances the write row.
 addData4f (VBase4 const data)
 Sets the write row to a particular 4-component value, and advances the write row.
 addData4i (int a, int b, int c, int d)
 Sets the write row to a particular 4-component value, and advances the write row.
 clear ()
 Resets the GeomVertexWriter to the initial state.
int getArray ()
 Returns the array index containing the data type that the writer is working on.
GeomVertexArrayData getArrayData ()
 Returns the particular array object that the writer is currently processing.
GeomVertexColumn const getColumn ()
 Returns the description of the data type that the writer is working on.
Thread getCurrentThread ()
 Returns the Thread pointer of the currently-executing thread, as passed to the constructor of this object.
int getStartRow ()
 Returns the row index at which the writer started.
GeomVertexData getVertexData ()
 Returns the vertex data object that the writer is processing.
int getWriteRow ()
 Returns the row index to which the data will be written at the next call to set_data*() or add_data*().
bool hasColumn ()
 Returns true if a valid data type has been successfully set, or false if the data type does not exist.
bool isAtEnd ()
 Returns true if the writer is currently at the end of the list of vertices, false otherwise.
GeomVertexWriter operator= (GeomVertexWriter const copy)
 output (ostream out)
bool setColumn (InternalName const name)
 Sets up the writer to use the data type with the indicated name.
bool setColumn (string name)
 Sets up the writer to use the data type with the indicated name.
bool setColumn (int column)
 Sets up the writer to use the nth data type of the GeomVertexFormat, numbering from 0.
bool setColumn (int array, GeomVertexColumn const column)
 Sets up the writer to use the indicated column description on the given array.
 setData1f (float data)
 Sets the write row to a particular 1-component value, and advances the write row.
 setData1i (int data)
 Sets the write row to a particular 1-component value, and advances the write row.
 setData2f (float x, float y)
 Sets the write row to a particular 2-component value, and advances the write row.
 setData2f (VBase2 const data)
 Sets the write row to a particular 2-component value, and advances the write row.
 setData2i (int a, int b)
 Sets the write row to a particular 2-component value, and advances the write row.
 setData3f (float x, float y, float z)
 Sets the write row to a particular 3-component value, and advances the write row.
 setData3f (VBase3 const data)
 Sets the write row to a particular 3-component value, and advances the write row.
 setData3i (int a, int b, int c)
 Sets the write row to a particular 3-component value, and advances the write row.
 setData4f (VBase4 const data)
 Sets the write row to a particular 4-component value, and advances the write row.
 setData4f (float x, float y, float z, float w)
 Sets the write row to a particular 4-component value, and advances the write row.
 setData4i (int a, int b, int c, int d)
 Sets the write row to a particular 4-component value, and advances the write row.
 setRow (int row)
 Sets the start row to the indicated value.

Detailed Description

This object provides a high-level interface for quickly writing a sequence of numeric values from a vertex table.

This object can be used both to replace existing vertices in the table, or to extend the table with new vertices. The set_data*() family of methods can only be used to replace existing data; it is an error to allow these to run past the end of the data. The add_data*() family of methods, on the other hand, can be used to replace existing data or add new data; if you call set_row() into the middle of existing data the add_data*() methods will behave like the corresponding set_data*(), but if they run past the end of existing data they will quietly add new vertices.

Like GeomVertexReader, the writer is particularly optimized for writing a single column of data values for a series of vertices, without changing columns between each number. Although you can also use one GeomVertexWriter to write across the columns if it is convenient, by calling set_column() repeatedly at each vertex, it is faster to write down the columns, and to use a different GeomVertexWriter for each column.

Note that, like a GeomVertexReader, a GeomVertexWriter does not keep a reference count to the actual vertex data buffer. This means that it is important not to keep a GeomVertexWriter object around over a long period of time in which the data buffer is likely to be deallocated; it is intended for making a quick pass over the data in one session.

It also means that you should create any GeomVertexWriters *before* creating GeomVertexReaders on the same data, since the writer itself might cause the vertex buffer to be deallocated. Better yet, use a GeomVertexRewriter if you are going to create both of them anyway.


Member Enumeration Documentation

enum AnimationType [inherited]
Enumerator:
ATNone 
ATPanda 
ATHardware 
enum Contents [inherited]
Enumerator:
COther 
CPoint 
CClipPoint 
CVector 
CTexcoord 
CColor 
CIndex 
CMorphDelta 
enum GeomRendering [inherited]
Enumerator:
GRIndexedPoint 
GRIndexedOther 
GRIndexedBits 
GRPoint 
GRPointUniformSize 
GRPerPointSize 
GRPointPerspective 
GRPointAspectRatio 
GRPointScale 
GRPointRotate 
GRPointSprite 
GRPointSpriteTexMatrix 
GRPointBits 
GRTriangleStrip 
GRTriangleFan 
GRLineStrip 
GRCompositeBits 
GRFlatFirstVertex 
GRFlatLastVertex 
GRShadeModelBits 
GRTexcoordLightVector 
enum NumericType [inherited]
Enumerator:
NTUint8 
NTUint16 
NTUint32 
NTPackedDcba 
NTPackedDabc 
NTFloat32 
enum PrimitiveType [inherited]
Enumerator:
PTNone 
PTPolygons 
PTLines 
PTPoints 
enum ShadeModel [inherited]
Enumerator:
SMUniform 
SMSmooth 
SMFlatFirstVertex 
SMFlatLastVertex 
enum UsageHint [inherited]
Enumerator:
UHClient 
UHStream 
UHDynamic 
UHStatic 
UHUnspecified 

Constructor & Destructor Documentation

GeomVertexWriter ( GeomVertexArrayData  array_data,
Thread  current_thread 
)

Constructs a new writer to process the vertices of the indicated array only.

Constructs a new writer to process the vertices of the indicated array only.

GeomVertexWriter ( GeomVertexArrayData  array_data,
int  column,
Thread  current_thread 
)

Constructs a new writer to process the vertices of the indicated array only.

GeomVertexWriter ( GeomVertexArrayData  array_data,
int  column 
)

Constructs a new writer to process the vertices of the indicated array only.

GeomVertexWriter ( GeomVertexData  vertex_data,
InternalName const  name,
Thread  current_thread 
)

Constructs a new writer to process the vertices of the indicated data object.

This flavor creates the writer specifically to process the named data type.

GeomVertexWriter ( GeomVertexData  vertex_data,
InternalName const  name 
)

Constructs a new writer to process the vertices of the indicated data object.

This flavor creates the writer specifically to process the named data type.

GeomVertexWriter ( GeomVertexData  vertex_data,
Thread  current_thread 
)

Constructs a new writer to process the vertices of the indicated data object.

GeomVertexWriter ( GeomVertexData  vertex_data)

Constructs a new writer to process the vertices of the indicated data object.

GeomVertexWriter ( GeomVertexData  vertex_data,
string  name,
Thread  current_thread 
)

Constructs a new writer to process the vertices of the indicated data object.

This flavor creates the writer specifically to process the named data type.

GeomVertexWriter ( GeomVertexData  vertex_data,
string  name 
)

Constructs a new writer to process the vertices of the indicated data object.

This flavor creates the writer specifically to process the named data type.

GeomVertexWriter ( Thread  current_thread)

Constructs an invalid GeomVertexWriter.

You must use the assignment operator to assign a valid GeomVertexWriter to this object before you can use it.

Constructs an invalid GeomVertexWriter.

You must use the assignment operator to assign a valid GeomVertexWriter to this object before you can use it.


Member Function Documentation

addData1f ( float  data)

Sets the write row to a particular 1-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData1i ( int  data)

Sets the write row to a particular 1-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData2f ( VBase2 const  data)

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData2f ( float  x,
float  y 
)

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData2i ( int  a,
int  b 
)

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData3f ( float  x,
float  y,
float  z 
)

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData3f ( VBase3 const  data)

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData3i ( int  a,
int  b,
int  c 
)

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData4f ( VBase4 const  data)

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData4f ( float  x,
float  y,
float  z,
float  w 
)

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

addData4i ( int  a,
int  b,
int  c,
int  d 
)

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

clear ( )

Resets the GeomVertexWriter to the initial state.

Reimplemented in GeomVertexRewriter.

int getArray ( )

Returns the array index containing the data type that the writer is working on.

Reimplemented in GeomVertexRewriter.

GeomVertexArrayData getArrayData ( )

Returns the particular array object that the writer is currently processing.

Reimplemented in GeomVertexRewriter.

GeomVertexColumn const getColumn ( )

Returns the description of the data type that the writer is working on.

Reimplemented in GeomVertexRewriter.

Thread getCurrentThread ( )

Returns the Thread pointer of the currently-executing thread, as passed to the constructor of this object.

int getStartRow ( )

Returns the row index at which the writer started.

It will return to this row if you reset the current column.

Reimplemented in GeomVertexRewriter.

GeomVertexData getVertexData ( )

Returns the vertex data object that the writer is processing.

This may return NULL if the writer was constructed with just an array pointer.

Reimplemented in GeomVertexRewriter.

int getWriteRow ( )

Returns the row index to which the data will be written at the next call to set_data*() or add_data*().

bool hasColumn ( )

Returns true if a valid data type has been successfully set, or false if the data type does not exist.

Reimplemented in GeomVertexRewriter.

bool isAtEnd ( )

Returns true if the writer is currently at the end of the list of vertices, false otherwise.

If this is true, another call to set_data*() will result in a crash, but another call to add_data*() will add a new row.

Reimplemented in GeomVertexRewriter.

GeomVertexWriter operator= ( GeomVertexWriter const  copy)
output ( ostream  out)

Reimplemented in GeomVertexRewriter.

bool setColumn ( int  array,
GeomVertexColumn const  column 
)

Sets up the writer to use the indicated column description on the given array.

This also resets the current write row number to the start row (the same value passed to a previous call to set_row(), or 0 if set_row() was never called.)

The return value is true if the data type is valid, false otherwise.

Reimplemented in GeomVertexRewriter.

bool setColumn ( InternalName const  name)

Sets up the writer to use the data type with the indicated name.

This also resets the write number to the start row (the same value passed to a previous call to set_row(), or 0 if set_row() was never called.)

The return value is true if the data type is valid, false otherwise.

Reimplemented in GeomVertexRewriter.

bool setColumn ( string  name)

Sets up the writer to use the data type with the indicated name.

This also resets the write row number to the start row (the same value passed to a previous call to set_row(), or 0 if set_row() was never called.)

The return value is true if the data type is valid, false otherwise.

Reimplemented in GeomVertexRewriter.

bool setColumn ( int  column)

Sets up the writer to use the nth data type of the GeomVertexFormat, numbering from 0.

This also resets the write row number to the start row (the same value passed to a previous call to set_row(), or 0 if set_row() was never called.)

The return value is true if the data type is valid, false otherwise.

Reimplemented in GeomVertexRewriter.

setData1f ( float  data)

Sets the write row to a particular 1-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData1i ( int  data)

Sets the write row to a particular 1-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData2f ( float  x,
float  y 
)

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData2f ( VBase2 const  data)

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData2i ( int  a,
int  b 
)

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData3f ( float  x,
float  y,
float  z 
)

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData3f ( VBase3 const  data)

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData3i ( int  a,
int  b,
int  c 
)

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData4f ( float  x,
float  y,
float  z,
float  w 
)

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData4f ( VBase4 const  data)

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setData4i ( int  a,
int  b,
int  c,
int  d 
)

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

setRow ( int  row)

Sets the start row to the indicated value.

The writer will begin writing to the indicated row; each subsequent set_data*() call will store the data into the subsequent row. If set_column() is called, the writer will return to this row.

Reimplemented in GeomVertexRewriter.

 All Classes Namespaces Functions Variables Enumerations Enumerator Properties