DBASE sample code

New Message Reply Date view Thread view Subject view Author view

David Plew (kishore++at++aimnet.com)
Mon, 3 Mar 1997 10:38:09 -0800 (PST)


>Dear Sir:
>
> I am working with DBASE process ,too;and try to figure out how to
>arrange pfDBaseFunc(),pfBuffer(),pfAddBuffer,pfDelete(),...etc
>I can not find any example code to use this, Can you show me
>how you use these codes?
>
> Thanks a lot.

>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


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:54:49 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.