David Plew (kishore++at++aimnet.com)
Mon, 3 Mar 1997 10:38:09 -0800 (PST)
>Sam Chu
>National Center for High-Performance Computing
>Scientific Visualization Lab Email: c00chu00++at++nchc.gov.tw
>Tel: (886)35-776085 Ext 248 Fax : (886)35-773538
Here is a simple code to show how to tuse DBASE process.
Good luck
-anita
/***************************************************************************/
#include <stdlib.h>
#include <Performer/pf.h>
void *arena = NULL;
pfScene **scene;
pfGroup **root;
pfSwitch **testSw;
void pageDBase(void *data);
int main(int argc, char *argv[])
{
pfPipe *p;
pfChannel *chan;
pfCoord view;
pfPipeWindow *pw;
pfInit();
arena = pfGetSharedArena();
scene = (pfScene **) pfMalloc(sizeof(pfScene *), arena);
root = (pfGroup **) pfMalloc(sizeof(pfGroup *), arena);
testSw= (pfSwitch **) pfMalloc(sizeof(pfSwitch *), arena);
pfMultiprocess(PFMP_APP_CULL_DRAW | PFMP_FORK_DBASE);
pfConfig();
*scene = pfNewScene();
*testSw = pfNewSwitch();
if ((*root = (pfGroup *)pfdLoadFile("/disk4/people/kishore/performer/data/globeAnim.iv")) == NULL)
{
printf("Unable to load data file....\n");
pfExit();
exit(-1);
}
pfAddChild(*scene, *testSw);
pfAddChild(*testSw, *root);
p = pfGetPipe(0);
pw = pfNewPWin(p);
pfPWinType(pw, PFWIN_TYPE_X);
pfPWinName(pw, "Dynamic scene Updation");
pfPWinOriginSize(pw, 100, 100, 720, 486);
pfOpenPWin(pw);
chan = pfNewChan(p);
pfChanScene(chan, *scene);
pfChanNearFar(chan, 1.0f, 10000.0f);
pfChanFOV(chan, 100.0f, -1.0f);
pfSetVec3(view.hpr, 0, 0, 0);
pfSetVec3(view.xyz, 0.0f, -50.0f, 60.0f);
pfChanView(chan, view.xyz, view.hpr);
pfDBaseFunc(pageDBase);
while (TRUE)
{
pfSync();
pfFrame();
}
pfExit();
return 0;
}
void pageDBase(void *data)
{
static pfBuffer *buf = NULL;
static int i = 0;
pfSwitch *newSw;
printf("inside pageDBase\n");
if ( i==15 )
{
printf("Deleting old switch and inserting new one\n");
if (buf == NULL)
{
buf = pfNewBuffer();
pfSelectBuffer(buf);
}
newSw = pfNewSwitch();
pfBufferRemoveChild(*testSw, *root);
pfBufferAddChild(newSw, *root);
pfBufferRemoveChild(*scene, *testSw);
pfAsyncDelete(*testSw);
pfBufferAddChild(*scene, newSw);
pfMergeBuffer();
}
i++;
pfDBase();
}
/******************************************************************************/
=======================================================================
List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer/
Submissions: info-performer++at++sgi.com
Admin. requests: info-performer-request++at++sgi.com
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:54:49 PDT