Re: [info-performer] pre-app tile callback

Date view Thread view Subject view Author view

From: Brian Furtaw (brian++at++sgi.com)
Date: 05/08/2003 20:03:43


Pat attached is a Makefile and sample app which works on my machine
under 3.0.1. Of course I am running it on Linux RedHat 7.3. If you run
this the printf in the APP callabck should prinout every frame.

Brian

Gatewood, Pat wrote:
> If that was the case, wouldn't the pre-app callback be made at least once?
> It isn't called at all.
>
> I forgot to mention that this is a cliptexture application.
>
> -----Original Message-----
> From: Yair Kurzion [mailto:yair++at++polygon.engr.sgi.com]
> Sent: Wednesday, May 07, 2003 18:15
> To: GatewoodWP++at++navair.navy.mil
> Cc: info-performer++at++sgi.com
> Subject: Re: [info-performer] pre-app tile callback
>
>
>
> Hello Pat !
>
>
>>I have an application which is using a pre-app callback to translate some
>>geometry under a pfDcs.
>>
>>It works under Performer 2.2.
>>
>>The same code with the same data under Performer 3.0.1 fails to call the
>>callback. Any ideas?
>
>
> Do you share the APP callback between channels (pfChannel::setShare) ?
>
> pf2.2 contains a bug: When you share the APP callback between channels, all
> the sharing channels call it.
>
> The correct behavior (in the man page): When you share the APP callback
> between channels, only the master channel calls it.
>
> This bug was fixed somewhere between 2.2 and 3.0 (I think it was 2.4.x).
>
> Can this be the problem ?
>
> -yair
>

-- 
     ----oOOo----    ----oOOo----    ----oOOo----    ----oOOo----

Brian Furtaw (brian++at++sgi.com) Mailstop: DSE-2612 Graphics Guru Office:(301)572-3293 Fax: (253)323-8182 12200-G Plum Orchard Drive OpenGL/Performer/OpenInventor/ImageVision Silver Spring, Maryland 20904 Volumizer/Optimizer/React/PCI Device Drivers

// // Copyright 1995, Silicon Graphics, Inc. // ALL RIGHTS RESERVED // // This source code ("Source Code") was originally derived from a // code base owned by Silicon Graphics, Inc. ("SGI") // // LICENSE: SGI grants the user ("Licensee") permission to reproduce, // distribute, and create derivative works from this Source Code, // provided that: (1) the user reproduces this entire notice within // both source and binary format redistributions and any accompanying // materials such as documentation in printed or electronic format; // (2) the Source Code is not to be used, or ported or modified for // use, except in conjunction with OpenGL Performer; and (3) the // names of Silicon Graphics, Inc. and SGI may not be used in any // advertising or publicity relating to the Source Code without the // prior written permission of SGI. No further license or permission // may be inferred or deemed or construed to exist with regard to the // Source Code or the code base of which it forms a part. All rights // not expressly granted are reserved. // // This Source Code is provided to Licensee AS IS, without any // warranty of any kind, either express, implied, or statutory, // including, but not limited to, any warranty that the Source Code // will conform to specifications, any implied warranties of // merchantability, fitness for a particular purpose, and freedom // from infringement, and any warranty that the documentation will // conform to the program, or any warranty that the Source Code will // be error free. // // IN NO EVENT WILL SGI BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT // LIMITED TO DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, // ARISING OUT OF, RESULTING FROM, OR IN ANY WAY CONNECTED WITH THE // SOURCE CODE, WHETHER OR NOT BASED UPON WARRANTY, CONTRACT, TORT OR // OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR // PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, // OR AROSE OUT OF USE OR RESULTS FROM USE OF, OR LACK OF ABILITY TO // USE, THE SOURCE CODE. // // Contact information: Silicon Graphics, Inc., // 1600 Amphitheatre Pkwy, Mountain View, CA 94043, // or: http://www.sgi.com // // // simple.C: simple Performer program for programmer's guide // // $Revision: 1.13 $ // $Date: 2000/10/06 21:26:25 $ //

#include <stdlib.h>

#include <Performer/pf/pfChannel.h> #include <Performer/pf/pfLightSource.h> #include <Performer/pf/pfNode.h> #include <Performer/pf/pfScene.h>

#include <Performer/pfutil.h> #include <Performer/pfdu.h>

// // Usage() -- print usage advice and exit. This // procedure is executed in the application process. // static void Usage (void) { pfNotify(PFNFY_FATAL, PFNFY_USAGE, "Usage: simpleC file.ext ...\n"); exit(1); }

int PreApp(pfTraverser *trav, void *udata) { printf("In the APP callback\n"); return PFTRAV_CONT; }

int main (int argc, char *argv[]) { float t = 0.0f; if (argc < 2) Usage(); // Initialize Performer pfInit(); // Use default multiprocessing mode based on number of // processors. // pfMultiprocess( PFMP_DEFAULT ); // Load all loader DSO's before pfConfig() forks pfdInitConverter(argv[1]);

// initiate multi-processing mode set in pfMultiprocess call // FORKs for Performer processes, CULL and DRAW, etc. happen here. // pfConfig(); // Append to Performer search path, PFPATH, files in // /usr/share/Performer/data */ pfFilePath(".:/usr/share/Performer/data"); pfNode *root = pfdLoadFile(argv[1]); if (root == NULL) { pfExit(); exit(-1); } // Attach loaded file to a new pfScene pfScene *scene = new pfScene; scene->addChild(root); // Create a pfLightSource and attach it to scene scene->addChild(new pfLightSource); // Configure and open GL window pfPipe *p = pfGetPipe(0); pfPipeWindow *pw = new pfPipeWindow(p); pw->setWinType(PFPWIN_TYPE_X); pw->setName("OpenGL Performer"); pw->setOriginSize(0,0,500,500); pw->open(); // Create and configure a pfChannel. pfChannel *chan = new pfChannel(p); chan->setScene(scene); chan->setFOV(45.0f, 0.0f); root->setTravFuncs(PFTRAV_APP, PreApp, PreApp); // determine extent of scene's geometry pfSphere bsphere; root->getBound(&bsphere); chan->setNearFar(1.0f, 10.0f * bsphere.radius); // Simulate for twenty seconds. while (t < 20.0f) { pfCoord view; float s, c; // Go to sleep until next frame time. pfSync(); // Initiate cull/draw for this frame. pfFrame(); // Compute new view position. t = pfGetTime(); pfSinCos(45.0f*t, &s, &c); view.hpr.set(45.0f*t, -10.0f, 0); view.xyz.set(2.0f * bsphere.radius * s, -2.0f * bsphere.radius *c, 0.5f * bsphere.radius); chan->setView(view.xyz, view.hpr); } // Terminate parallel processes and exit pfExit(); return 0; }



Date view Thread view Subject view Author view

This archive was generated by hypermail 2b29 : Thu May 08 2003 - 20:06:31 PDT

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