Yair Kurzion (yair++at++polygon.engr.sgi.com)
Tue, 12 Oct 1999 12:22:36 -0700 (PDT)
Larry,
We make a distinction between processes that have a copy of the scene graph and
processes that do not. App, Cull and Isect each have their own copy of the
scene graph. Any scene graph changes made by the App process will travel
downstream to Cull and to Isect.
DBase may have its own pfBuffer, but it does not contain a copy of the main
scene graph. So, Dbase is not even on the main scene graph propagation stream.
The DBase process creates new nodes in its own pfBuffer. These nodes are
essentially a secondary scene graph. At the end of a Dbase frame, we merge the
new nodes from the Dbase pfBuffer into the main scene graph stream (the App
pfBuffer).
After merging, the Dbase process may no longer access these nodes because they
get moved from the DBase pfBuffer to the App pfBuffer. The only exception to
this rule is the pfBuffer* calls (pfBufferAddChild, pfBufferRemoveChild or
pfGroup::bufferAddChild, pfGroup::bufferRemoveChild). These calls allow access
to nodes of the main scene graph.
Create new nodes,
Add New nodes,
Delete nodes.
Dbase -----------------\
\
\
\ Scene-Graph Display List
App ---------------> Cull ------------------> Draw
\
\
\ Scene-Graph
\-----------------> Isect
At the bottom line, DBase has no upstream or downstream processes. It has its
own 1-stage stream of scene graph changes, and this stream merges the App stream
after a call to pfBuffer::merge.
-yair
--
\_________ \_____ \__ \__ \_____ Yair Kurzion
\_________ \_____ \__ \__ \_____ yair++at++sgi.com
\__ \__ \____\__ \__ http://reality.sgi.com/yair
\__ \__ \__ Work: (650) 933-6502
\__ \__ \__ Home: (408) 226-9771
\__ \__ \__
This archive was generated by hypermail 2.0b2 on Tue Oct 12 1999 - 12:22:45 PDT