pfdCombineBillboards(3pf) OpenGL Performer 3.2.2 libpfdu Reference Pages
NAME
pfdCombineBillboards - Merge pfBillboard nodes together.
FUNCTION SPECIFICATION
#include <Performer/pfdu.h>
void pfdCombineBillboards(pfNode *node, int sizeLimit);
DESCRIPTION
pfdCombineBillboards gathers sibling billboard nodes together into as few
large pfBillboard nodes as possible. This can often increase the
efficiency of billboard processing in databases with large numbers of
single-pfGeoSet pfBillboard nodes, such as the OpenGL Performer Town
database. The sizeLimit argument defines an upper limit to the merging
process. No pfBillboard node will be made to have more than this number
of pfGeoSets, and no pfBillboard node already having more than this
number will be modified during the traversal.
There are a few requirements and restrictions to the pfBillboard
combination process. In order to be merged, pfBillboard nodes must be
both similar and combinable.
For a pair of pfBillboard nodes to be similar they must each have the
same values for their pfBillboard attributes. The attributes of
pfBillboard nodes are:
Mode Both pfBillboard nodes must have the same rotation mode.
The modes are PFBB_AXIAL_ROT, PFBB_POINT_ROT_EYE, and
PFBB_POINT_ROT_WORLD.
Axis Both pfBillboard nodes must have the same axis of
rotation. The axis is compared using pfAlmostEqualVec3
with a tolerance of 0.0001.
In order for two pfBillboard nodes to be considered combinable, two
additional conditions must be met:
Size The destination pfBillboard node must not be too big. The
argument sizeLimit defines the maximum number if pfGeoSets
that any combined node may contain, so nodes that already
have at least sizeLimit pfGeoSets will not receive
additional pfGeoSets.
Safe Both pfBillboard nodes being combined--the one giving up
pfGeoSets and the one receiving them--must be uninstanced
nodes. This means that each node has only one parent. This
situation can be forced if desired by calling pfFlatten on
a scene graph before passing that scene graph to
pfdCombineBillboards.
Page 1
pfdCombineBillboards(3pf) OpenGL Performer 3.2.2 libpfdu Reference Pages
NOTES
The libpfdu source code, object code and documentation are provided as
unsupported software. Routines are subject to change in future releases.
SEE ALSO
pfFlatten, pfAlmostEqualVec3
Page 2