pfFluxMemory(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
NAMEpfFluxMemory - Manage a pfFluxMemoryFUNCTION SPECIFICATION
#include <Performer/pr/pfFlux.h>
static pfType* pfFluxMemory::getClassType(void);
pfFlux* pfFluxMemory::getFlux(pfFluxMemory* fmem);
static pfFluxMemory* pfFluxMemory::getFluxMemory(void* data);
PARENT CLASS FUNCTIONS
The OpenGL Performer class pfFluxMemory is derived from the parent class
pfMemory, so each of these member functions of class pfMemory are also
directly usable with objects of class pfFluxMemory. This is also true
for ancestor classes of class pfMemory.
void* pfMemory::getData(const void *ptr);
pfType * pfMemory::getType();
int pfMemory::isOfType(pfType *type);
int pfMemory::isExactType(pfType *type);
const char * pfMemory::getTypeName();
int pfMemory::copy(pfMemory *src);
int pfMemory::compare(const pfMemory *mem);
void pfMemory::print(uint which, uint verbose, char *prefix,
FILE *file);
int pfMemory::getArena(void *ptr);
void* pfMemory::getArena();
int pfMemory::ref();
int pfMemory::unref();
int pfMemory::unrefDelete();
int pfMemory::unrefGetRef();
int pfMemory::getRef();
int pfMemory::checkDelete();
int pfMemory::isFluxed();
void * pfMemory::getArena();
int pfMemory::getSize();
DESCRIPTION
A pfFluxMemory is a data buffer of a pfFlux. It has a header and them a
data portion. A pfFluxMemory should never be created or destroyed
separate from its parent pfFlux.
pfFluxMemory::getClassType returns the pfType* for the class
pfFluxMemory. The pfType* returned by pfFluxMemory::getClassType is the
same as the pfType* returned by invoking the virtual function getType on
any instance of class pfFluxMemory.
pfFluxMemory::getFlux returns a pointer to the parent pfFlux of a
pfFluxMemory.
Page 1
pfFluxMemory(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
pfFluxMemory::getFluxMemory returns a pointer to the pfFluxMemory that
data points to the data portion of.
The data portion of a pfFluxMemory can be converted into a fluxed form of
any Performer object that is derived from pfMemory. This should only be
done in the initFunc of a pfFlux. Although any Performer object can be
fluxed, only certain Performer objects have been modified to accept
fluxed forms of the objects they connect to. The following table lists
what can take what.
parent object fluxed child
____________________________
pfGeode pfGeoSet
|
Example of turning the data portion of a pfFluxMemory into a fluxed
pfGeoSet. This is how pfFluxedGSetInit() is implemented. Note: This
can only be done in C++.
int pfFluxedGSetInit(pfFluxMemory *fmem)
{
if (fmem == NULL)
return sizeof(pfGeoSet);
new(fmem) pfGeoSet;
return 0;
}
Example of creating a pfFlux containing fluxed pfGeoSets:
int make_fluxed_gset(pfFluxMemory *fmem)
{
pfGeoSet *gset;
pfVec3 *coords;
if (fmem == NULL)
return pfFluxedGSetInit(fmem);
pfFluxedGSetInit(fmem);
gset = (pfGeoSet*)fmem->getData();
gset->setPrimType(PFGS_TRIS);
... finish initializing pfGeoSet
return 0;
Page 2
pfFluxMemory(3pf) OpenGL Performer 3.2.2 libpr C++ Reference Pages
}
main()
{
pfFlux *fluxed_gset;
pfGeoSet *gset;
pfInit();
pfConfig();
fluxed_gset = new pfFlux(make_fluxed_gset,
PFFLUX_DEFAULT_NUM_BUFFERS);
gset = (pfGeoSet*)fluxed_gset->getCurData();
...
}
SEE ALSO
pfFlux, pfMemory, pfFluxedGSetInit
Page 3