pfuClipCenterNode(3pf) OpenGL Performer 3.2.2 libpfutil C Reference Pages
NAME
pfuNewClipCenterNode, pfuGetClipCenterNodeClassType,
pfuClipCenterNodeCallback, pfuGetClipCenterNodeCallback,
pfuClipCenterNodeRefNode, pfuGetClipCenterNodeRefNode,
pfuClipCenterNodeClipTexture, pfuGetClipCenterNodeClipTexture,
pfuClipCenterNodeMPClipTexture, pfuGetClipCenterNodeMPClipTexture,
pfuClipCenterNodeChannel, pfuGetClipCenterNodeChannel,
pfuNewTexGenClipCenterNode, pfuTexGenClipCenterNodeTexGen,
pfuGetTexGenClipCenterNodeTexGen, pfuProcessClipCenters,
pfuProcessClipCentersWithChannel, pfuTexGenClipCenterNode - Special scene
graph node for managing and updating pfMPClipTextures
FUNCTION SPECIFICATION
#include <Performer/pfutil.h>
pfuClipCenterNode * pfuNewClipCenterNode(void);
pfType * pfuGetClipCenterNodeClassType(void);
void -
pfuClipCenterNodeCallback(pfuClipCenterNode *node,
pfuClipCenterPostAppCallbackType *callback);
pfuClipCenterPostAppCallbackType * -
pfuGetClipCenterNodeCallback(pfuClipCenterNode *node);
void -
pfuClipCenterNodeRefNode(pfuClipCenterNode *node,
pfNode *refnode);
pfNode * -
pfuGetClipCenterNodeRefNode(pfuClipCenterNode *node);
void -
pfuClipCenterNodeClipTexture(pfuClipCenterNode *node,
pfClipTexture *cliptex);
pfClipTexture * -
pfuGetClipCenterNodeClipTexture(pfuClipCenterNode *node);
-
pfuClipCenterNodeMPClipTexture(pfuClipCenterNode *node,
pfMPClipTexture *mpcliptex)
pfMPClipTexture * -
pfuGetClipCenterNodeMPClipTexture(pfuClipCenterNode *node);
-
pfuClipCenterNodeChannel(pfuClipCenterNode *node,
pfChannel *chan);
Page 1
pfuClipCenterNode(3pf) OpenGL Performer 3.2.2 libpfutil C Reference Pages
pfChannel * -
pfuGetClipCenterNodeChannel(pfuClipCenterNode *node);
pfuTexGenClipCenterNode * pfuNewTexGenClipCenterNode(void);
void -
pfuTexGenClipCenterNodeTexGen(pfuTexGenClipCenterNode *node,
pfTexGen *tgen);
pfTexGen * -
pfuGetTexGenClipCenterNodeTexGen(pfuTexGenClipCenterNode *node);
void pfuProcessClipCenters(pfNode *node,
pfList *mpcliptex);
void -
pfuProcessClipCentersWithChannel(pfNode *node,
pfList *mpcliptex,
pfChannel *chan);
-
pfuTexGenClipCenterNode::pfuTexGenClipCenterNode(void);
void -
pfuTexGenClipCenterNode::setTexGen(pfTexGen tgen);
pfTexGen * -
pfuTexGenClipCenterNode::getTexGen(void);
pfuTexGenClipCenterNode * pfuNewTexGenClipCenterNode(void);
void -
pfuTexGenClipCenterNodeTexGen(pfuTexGenClipCenterNode *node,
pfTexGen *tgen);
pfTexGen * -
pfuGetTexGenClipCenterNodeTexGen(pfuTexGenClipCenterNode *node);
pfuNewTexGenClipCenterNodel
constructs a subclass of the pfuClipCenterNode called the
pfuTexGenClipCenterNode. This node uses a different centering algorithm.
Rather than derive the center from the closest point on the cliptextured
geometry to the channels viewpoint, as does the pfuClipCenterNode, it converts
the position of the viewpoint from object space to texture space. It uses
Page 2
pfuClipCenterNode(3pf) OpenGL Performer 3.2.2 libpfutil C Reference Pages
the current value of the object linear texture generation parameters. It
does not take the texture transform matrix into account.
This centering algorithm is useful if the clipmapped geometry is mapped
using object space texture coordinate generation.
pfuTexGenClipCenterNodeTexGenl
sets a pointer to the pfTexGen object used to apply texture coordinates to
the cliptextured geometry. This object is used by the post-APP callback
to compute the viewpoint position in texture space.
pfuGetTexGenClipCenterNodeTexGenl
returns a pointer to the current pfTexGen object used by the post-APP
centering callback. If no pfTexGen object has been assigned, the default
value is NULL.
pfuProcessClipCenters
finds all the pfuClipCenterNodes in sub-
graph rooted by the node argument,
collects all the pfMPClipTexture objects connected to them (creating them
if only the pfClipTexture exists), and appends them to the pfList provided as
the second argument. The pfList argument should be a pointer to a pfList
object created by the application.
Here is a code fragment that processes all the pfuClipCenterNodes in the
scenegraph, then adds them to all the pipes, using pipe 0 as the masterpipe:
ClipTexture functionality is not supported under Linux.
BUGS
Making a clipcenter node with a pfGeode (possibly other types as well) as
a child when a pfdBuilder is being used to create a scene graph (e.g. in
the .im loader) can result in the callback being lost. One workaround is
to create a dummy pfGroup node above the pfGeode and use that instead.
See the reference page for pfuGetClosestPoint() for bugs and limitations
of the closest-point search implementation.
Page 3
pfuClipCenterNode(3pf) OpenGL Performer 3.2.2 libpfutil C Reference Pages
SEE ALSO
pfClipTexture, pfMPClipTexture, pfImageCache, pfuProcessClipCenters,
pfuProcessClipCentersWithChannel
Page 4