pfvView(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages pfvView(3pf)NAMEpfvView - Configure one or more Viewer views through XML file or API
calls.
FUNCTION SPECIFICATION
#include <Performer/pfv/pfvViewer.h>
pfvView::pfvView();
virtual int pfvView::setXmlField( pfvXmlNode*xml );
pfvWorld* pfvView::getCurWorld();
int pfvView::setTargetWorld( pfvWorld* w );
int pfvView::setTargetWorld( char* wName );
int pfvView::setTargetWorld( int wIndex );
pfvWorld* pfvView::getTargetWorld();
char* pfvView::getTargetWorldName();
void pfvView::autoPos();
int pfvView::addNode(pfNode*node);
pfGroup* pfvView::getRootNode();
DESCRIPTION
The pfvView class extends the pfvDispView class by being able to be
directed to a pfvWorld, and by managing a list of scoped pfvModules.
Additionally, geometry can be assigned to pfvViews (as opposed to
assigning it to a pfvWorld), in order to achieve complex multiview
configurations.
A pfvView object cannot be created through its constructor (which is
private). Instead, a pfvView must be created through the
pfvViewer::createView method. Note that since class pfvViewer is derived
from pfDisplayMngr, and createView is a virtual method on class
pfDisplayMngr, the return pointer for createView is pfDispView*, even if
view is actually a pfvView. Casting the returned pointer takes care of
this, as shown below:
Eg:
pfvViewer* viewer = new pfvViewer;
pfvView* view = (pfvView*)(viewer->createView());
A pfvView must be directed to a pfvWorld for viewing before the first
Page 1
pfvView(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages pfvView(3pf)
call to pfvViewer::frame. If this is not done explicitly, pfvViewer will
direct view to world0 before entering the first frame.
Directing a pfvView to a pfvWorld is not an immediate-mode action. The
actual switching (of pfChannels and pfScenes) is carried out by the
pfvViewer after the current frame has completed, and before starting a
new frame.
For this reason, pfvView objects hold two pointers to pfvWorld: one is
the current world (ie the world that view is viewing this frame), the
other one is the target world (world that will be viewed next frame).
pfvView::getCurWorld() returns a pointer to view's current world, while
pfvView::getTargetWorld() returns a pointer to the pfvWorld scheduled to
be viewed by view on next frame.
When a new view is created, both its current world and its target world
pointers are set to NULL.
A view is then directed to a pfvWorld by calling
pfvView::setTargetWorld().
As this world switch will be cached until the start of next frame, the
pointer returned by pfvView::getCurWorld() will not change immediately
after calling pfvView::setTargetWorld().
Method pfvView::getTargetWorld() however, will return a pointer to the
world scheduled to be viewed by view on next frame, and this will change
immediately after a call to pfvView::setTargetWorld().
It is also legal to direct a pfvView to a pfvWorld that has not yet been
created, by providing the target world's name thorough method
pfvView::setTargetWorld(char*wName). The world name will be stored until
pfvViewer::config is called, by which time a pfvWorld is expected to
exist with the specified name.
Note that pfvView::setTargetWorld(int wIndex) can also be used to set
target world, but index must be valid at the time of this call, and an
invalid index will not be cached.
pfvView::autoPos() computes new eye position based on the position and
size of the geometry currently being viewed by view. Note that auto-
positioning of eye will happen by default on first frame for all views
for which an eye point was not set explicitely.
pfvView::addNode() allows geometry to be associated with a specific view
(instead of with a pfvWorld). view-geometry is intended to be visible in
channels belonging to this view only, even when other views are viewing
the same pfvWorld. This is achieved through the pfvSetNodeChanMask
function declared in pfvDisplay.h. Note that this method cannot be called
before modules' POSTCONFIG callbacks are called by viewer.
Page 2
pfvView(3pf) OpenGL Performer 3.2.2 libpfv C++ Reference Pages pfvView(3pf)pfvView::getRootNode() returns a pointer to the group node to which all
geometry assigned to a view through pfvView::addNode() is added. This
node is created by pfvViewer just before modules' POSTCONFIG callbacks
are called, so this method will return NULL until then.
NOTESSEE ALSO
pfvDispView, pfvDisplayMngr, pfvViewer, pfvWorld, pfvSetNodeChanMask
Page 3