pfNewSCS man page on IRIX

Man page or keyword search:  
man Server   31559 pages
apropos Keyword Search (all sections)
Output format
IRIX logo
[printable version]



pfSCS(3pf)	OpenGL Performer 3.2.2 libpf C Reference Pages	    pfSCS(3pf)

NAME
     pfNewSCS, pfGetSCSClassType, pfGetSCSMat, pfGetSCSMatPtr - Create and get
     matrix for a static coordinate system node.

FUNCTION SPECIFICATION
     #include <Performer/pf.h>

     pfSCS *	       pfNewSCS(pfMatrix mat);

     pfType *	       pfGetSCSClassType(void);

     void	       pfGetSCSMat(pfSCS *scs, pfMatrix mat);

     const pfMatrix*   pfGetSCSMatPtr(pfSCS *scs);

PARENT CLASS FUNCTIONS
     The OpenGL Performer class pfSCS is derived from the parent class
     pfGroup, so each of these member functions of class pfGroup are also
     directly usable with objects of class pfSCS.  Casting an object of class
     pfSCS to an object of class pfGroup is taken care of automatically.  This
     is also true for casts to objects of ancestor classes of class pfGroup.

     int	pfAddChild(pfGroup *group, pfNode *child);
     int	pfInsertChild(pfGroup *group, int index, pfNode *child);
     int	pfReplaceChild(pfGroup *group, pfNode *old, pfNode *new);
     int	pfRemoveChild(pfGroup *group, pfNode* child);
     int	pfSearchChild(pfGroup *group, pfNode* child);
     pfNode *	pfGetChild(const pfGroup *group, int index);
     int	pfGetNumChildren(const pfGroup *group);
     int	pfBufferAddChild(pfGroup *group, pfNode *child);
     int	pfBufferRemoveChild(pfGroup *group, pfNode *child);

     Since the class pfGroup is itself derived from the parent class pfNode,
     objects of class pfSCS can also be used with these functions designed for
     objects of class pfNode.

     pfGroup *	    pfGetParent(const pfNode *node, int i);
     int	    pfGetNumParents(const pfNode *node);
     void	    pfNodeBSphere(pfNode *node, pfSphere *bsph, int mode);
     int	    pfGetNodeBSphere(pfNode *node, pfSphere *bsph);
     pfNode*	    pfClone(pfNode *node, int mode);
     pfNode*	    pfBufferClone(pfNode *node, int mode, pfBuffer *buf);
     int	    pfFlatten(pfNode *node, int mode);
     int	    pfNodeName(pfNode *node, const char *name);
     const char *   pfGetNodeName(const pfNode *node);
     pfNode*	    pfFindNode(pfNode *node, const char *pathName,
		      pfType *type);
     pfNode*	    pfLookupNode(const char *name, pfType* type);
     int	    pfNodeIsectSegs(pfNode *node, pfSegSet *segSet,
		      pfHit **hits[]);

									Page 1

pfSCS(3pf)	OpenGL Performer 3.2.2 libpf C Reference Pages	    pfSCS(3pf)

     void	    pfNodeTravMask(pfNode *node, int which, uint mask,
		      int setMode, int bitOp);
     uint	    pfGetNodeTravMask(const pfNode *node, int which);
     void	    pfNodeTravFuncs(pfNode* node, int which,
		      pfNodeTravFuncType pre, pfNodeTravFuncType post);
     void	    pfGetNodeTravFuncs(const pfNode* node, int which,
		      pfNodeTravFuncType *pre, pfNodeTravFuncType *post);
     void	    pfNodeTravData(pfNode *node, int which, void *data);
     void *	    pfGetNodeTravData(const pfNode *node, int which);
     void	    pfNodeTravMode(pfNode* node, int which, int mode,
		      int val);
     int	    pfGetNodeTravMode(const pfNode* node, int which,
		      int mode);

     Since the class pfNode is itself derived from the parent class pfObject,
     objects of class pfSCS can also be used with these functions designed for
     objects 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);
     int	   pfDeleteGLHandle(pfObject *obj);

     Since the class pfObject is itself derived from the parent class
     pfMemory, objects of class pfSCS 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);

									Page 2

pfSCS(3pf)	OpenGL Performer 3.2.2 libpf C Reference Pages	    pfSCS(3pf)

PARAMETERS
     scs  identifies a pfSCS

DESCRIPTION
     A pfSCS node represents a static coordinate system -- a modeling
     transform that cannot be changed once created.  pfSCS nodes are similar
     to but less flexible than pfDCS nodes. What they lack in changeability
     they make up in performance.

     pfNewSCS creates and returns a handle to a pfSCS.	Like other pfNodes,
     pfSCSes are always allocated from shared memory and can be deleted using
     pfDelete.

     pfNewSCS creates a pfSCS using mat as the transformation matrix.

     By default a pfSCS uses a dynamic bounding volume so it is automatically
     updated when children are added, deleted or changed.  This behavior may
     be changed using pfNodeBSphere.  The bound for a pfSCS encompasses all
     B(i)*mat, where B(i) is the bound for the child 'i' and mat is the
     transformation matrix of the pfSCS.

     pfGetSCSClassType returns the pfType* for the class pfSCS.	 The pfType*
     returned by pfGetSCSClassType is the same as the pfType* returned by
     invoking pfGetType on any instance of class pfSCS.	 Because OpenGL
     Performer allows subclassing of built-in types, when decisions are made
     based on the type of an object, it is usually better to use pfIsOfType to
     test if an object is of a type derived from a Performer type rather than
     to test for strict equality of the pfType*'s.

     The transformation of a pfSCS affects all its children.  As the hierarchy
     is traversed from top to bottom, each new matrix is pre-multiplied to
     create the new transformation.  For example, if SCSb is below SCSa in the
     scene graph, any geometry G below SCSa is transformed as G*SCSb*SCSa.

     Static transformations represented by pfSCSes may be 'flattened' in a
     pre-processing step for improved intersection, culling, and drawing
     performance.  pfFlatten accumulates transformations in a scene graph,
     applies them to geometry, and sets flattened pfSCSes to the identity
     matrix.  Flattening is recommended when available memory and scene graph
     structure allow it.  See pfFlatten for more details.

     pfGetSCSMat copies the transformation matrix for scs into mat. For faster
     matrix access, pfGetSCSMatPtr returns a const pointer to scs's matrix.

     Both pre and post CULL and DRAW callbacks attached to a pfSCS (-
     pfNodeTravFuncs) will be affected by the transformation represented by
     the pfSCS, i.e. - the pfSCS matrix will already have been applied to the
     matrix stack before the pre callback is called and will be popped only
     after the post callback is called.

									Page 3

pfSCS(3pf)	OpenGL Performer 3.2.2 libpf C Reference Pages	    pfSCS(3pf)

SEE ALSO
     pfGroup, pfLookupNode, pfFlatten, pfMatrix, pfNode, pfTraverser, pfDelete

									Page 4

[top]

List of man pages available for IRIX

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net