pfFluxedGeoState(3pf) OpenGL Performer 3.2.2 libpr C Reference Pages
NAME
pfNewFGS, pfGetFGSWriteableAttr, pfGetFGSWriteableMultiAttr,
pfGetFGSAttr, pfGetFGSMultiAttr, pfFGSWriteComplete, pfFGSMode,
pfGetFGSMode, pfFGSVal, pfGetFGSVal - Multibuffered wrapper for
pfGeoState
FUNCTION SPECIFICATION
#include <Performer/pr.h>
pfFluxedGeoState* pfNewFGS(void *arena);
void* pfGetFGSWriteableAttr(pfFluxedGeoState* _fgs,
uint64_t attr);
void* pfGetFGSWriteableMultiAttr(pfFluxedGeoState* _fgs,
uint64_t attr, int index);
void* pfGetFGSAttr(pfFluxedGeoState* _fgs, uint64_t attr);
void* pfGetFGSMultiAttr(pfFluxedGeoState* _fgs,
uint64_t attr, int index);
void pfFGSWriteComplete(pfFluxedGeoState* _fgs);
void pfFGSMode(pfFluxedGeoState* _fgs, uint64_t mode,
int val);
int pfGetFGSMode(pfFluxedGeoState* _fgs, uint64_t mode);
void pfFGSVal(pfFluxedGeoState* _fgs, uint64_t gsval,
float val);
float pfGetFGSVal(pfFluxedGeoState* _fgs, uint64_t gsval);
PARENT CLASS FUNCTIONS
The OpenGL Performer class pfFluxedGeoState is derived from the parent
class pfObject, so each of these member functions of class pfObject are
also directly usable with objects of class pfFluxedGeoState. Casting an
object of class pfFluxedGeoState to an object of class pfObject is taken
care of automatically. This is also true for casts to objects of
ancestor classes of class pfObject.
void pfUserDataSlot(pfObject *obj, int slot, void *data);
void pfUserData(pfObject *obj, void *data);
void* pfGetUserDataSlot(pfObject *obj, int slot);
void* pfGetUserData(pfObject *obj);
int pfGetNumUserData(pfObject *obj);
int pfGetNamedUserDataSlot(const char *name);
const char* pfGetUserDataSlotName(int slot);
int pfGetNumNamedUserDataSlots(void);
Page 1
pfFluxedGeoState(3pf) OpenGL Performer 3.2.2 libpr C Reference Pages
int pfGetGLHandle(pfObject *obj);
int pfDeleteGLHandle(pfObject *obj);
Since the class pfObject is itself derived from the parent class
pfMemory, objects of class pfFluxedGeoState can also be used with these
functions designed for objects of class pfMemory.
pfType * pfGetType(const void *ptr);
int pfIsOfType(const void *ptr, pfType *type);
int pfIsExactType(const void *ptr, pfType *type);
const char * pfGetTypeName(const void *ptr);
int pfRef(void *ptr);
int pfUnref(void *ptr);
int pfUnrefDelete(void *ptr);
int pfUnrefGetRef(void *ptr);
int pfGetRef(const void *ptr);
int pfCopy(void *dst, void *src);
int pfDelete(void *ptr);
int pfIsFluxed(void *ptr);
int pfCompare(const void *ptr1, const void *ptr2);
void pfPrint(const void *ptr, uint which, uint verbose,
FILE *file);
void * pfGetArena(void *ptr);
DESCRIPTION
pfFluxedGeoState is a utility class which allows for multi-process safe
state changes in dynamic pfShader passes. pfFluxedGeoState uses pfFlux as
its synchronization mechanism, so the api is similar.
pfGetFGSWriteableAttr is used to request a writeable attribute from the
pfFluxedGeoState. On a pfGeoState, one normally creates an attribute and
sets it via pfGStateAttr. This means of setting attributes is not
possible on pfFluxedGeoState since Performer must do some extra internal
book-keeping to make sure state changes are frame synchronous.
pfGetFGSWriteableAttr will allocate an attribute if it does not exist on
the pfFluxedGeoState or return the existing one. Once changes to the
attribute are complete, it is necessary to call pfFGSWriteComplete to
commit the changes. The attributes supported by this function are the
same as those of pfGStateAttr:
PFSTATE_FRONTMTL
PFSTATE_BACKMTL
PFSTATE_TEXTURE
PFSTATE_TEXENV
PFSTATE_FOG
PFSTATE_LIGHTMODEL
PFSTATE_LIGHTS
PFSTATE_COLORTABLE
PFSTATE_HIGHLIGHT
PFSTATE_LPOINTSTATE
PFSTATE_TEXGEN
Page 2
pfFluxedGeoState(3pf) OpenGL Performer 3.2.2 libpr C Reference Pages
PFSTATE_TEXLOD
PFSTATE_TEXMAT
PFSTATE_DECALPLANE
PFSTATE_COMBINER
PFSTATE_ENVTXPROG
PFSTATE_ENFRAGPROG
PFSTATE_SHADPROG
pfGetFGSWriteableMultiAttr is used to get a writeable multi-attribute.
The behavior is the same as for pfGetFGSWriteableAttr. index specifies
which element of the multi-attribute to return. Currently, the only
multi-attributes that performer supports are related to multi-texturing,
so attr must be one of:
PFSTATE_TEXTURE
PFSTATE_TEXENV
PFSTATE_TEXGEN
PFSTATE_TEXLOD
PFSTATE_TEXMAT
pfGetFGSAttr and pfGetFGSMultiAttr are used to retrieve pointers to
read-only attributes. These attributes should not be modified since
Performer can not keep track of the changes. pfGetFGSAttr and
pfGetFGSMultiAttr support the same attribute types as
pfGetFGSWriteableAttr and pfGetFGSWriteableMultiAttr.
pfFGSMode and pfGetFGSMode are used to set and get the modes on this
pfFluxedGeoState. The supported modes are the same as those of
pfGeoState:
PFSTATE_TRANSPARENCY
PFSTATE_ANTIALIAS
PFSTATE_DECAL
PFSTATE_ALPHAFUNC
PFSTATE_ENLIGHTING
PFSTATE_ENTEXTURE
PFSTATE_ENFOG
PFSTATE_CULLFACE
PFSTATE_ENWIREFRAME
PFSTATE_ENCOLORTABLE
PFSTATE_ENHIGHLIGHTING
PFSTATE_ENLPOINTSTATE
PFSTATE_ENTEXGEN
PFSTATE_ENTEXLOD
PFSTATE_ENTEXMAT
PFSTATE_ENCOMBINER
PFSTATE_ENVTXPROG
PFSTATE_ENFRAGPROG
PFSTATE_ENSHADPROG
Page 3
pfFluxedGeoState(3pf) OpenGL Performer 3.2.2 libpr C Reference Pages
pfFGSVal and pfGetFGSVal are used to set and get this pfFluxedGeoState's
values. The supported values are the same as for pfGeoState:
PFSTATE_ALPHAREF
SEE ALSO
pfGeoState, pfFluxedFBState, pfShader
Page 4