Re: Flickering texture

New Message Reply Date view Thread view Subject view Author view

From: Brian Furtaw (brian++at++sgi.com)
Date: 06/04/2001 08:17:25


So this should be working for you. I would however at this point move
the pfOverride to the node you are trying to effect. Using a pre and
post draw callback. Then you should be able to effect a change. To
define pre and post draw callbacks you'll have to find or create the
pfGeode that contains the geometry you want the state change to effect.
Then call the setTravFuncs()(pfNode man page) method of that geode.
Agood example of this is in
/usr/share/Performer/src/pguide/libpf/C++/bump.C, here is an excerpt,

    // set up scene graph
    pfGeode *Qgeode = new pfGeode;
        .
        .
        .
    Qgeode->setTravFuncs(PFTRAV_DRAW, PreDrawPass, PostDrawPass);

static int PreDrawPass(pfTraverser *, void *data)
{
  pfTransparency(PFTR_OFF);
  pfDisable(PFEN_TEXTURE);
  pfOverride(PFSTATE_ENTEXTURE, PF_ON);

  return PFTRAV_CONT;
}

static int PostDrawPass(pfTraverser *, void *)
{
  pfOverride(PFSTATE_ENTEXTURE, PF_OFF);
  return PFTRAV_CONT;
}

Brian

Lucia Cappellato wrote:
>
> hi,
>
> yes Brian I have the same result, I try with other costant value and I see
> that the only good values (for which I obtain with printf the same value)
> are these express in hexadecimal notation, as PFDECAL_PLANE and
> PFDECAL_LAYER_1
>
> How can I set exact value?
>
> hello Lucia
> ----- Original Message -----
> From: "Brian Furtaw" <brian++at++sgi.com>
> To: "Lucia Cappellato" <l.cappellato++at++hsantalucia.it>
> Cc: <info-performer++at++sgi.com>
> Sent: Monday, June 04, 2001 12:31 PM
> Subject: Re: Flickering texture
>
> > Okay try adding this line and see if you still have the same results.
> >
> > pfOverride(PFSTATE_DECAL, PF_OFF);
> >
> > // then do the modification
> >
> > pfDecal(PFDECAL_BASE_HIGH_QUALITY);
> > // and lock it
> > pfOverride(PFSTATE_DECAL, PF_ON);
> > pfDraw();
> >
> > Brian
> >
> > Lucia Cappellato wrote:
> > >
> > > Hi,
> > >
> > > I do as you suggest, I put in the function called during draw callback
> (by
> > > pfChanTravFunc) the next lines of code:
> > >
> > > pfClearChan(channel);
> > > pfDecal(PFDECAL_BASE_HIGH_QUALITY);
> > > pfOverride(PFSTATE_DECAL, PF_ON);
> > > pfDraw();
> > >
> > > but ssome texture flickering too. So i decide to do a printf about value
> of
> > > decal using pfGetDecal and I obtain a strange value 6 while in the
> header
> > > file pr.h PFCEDAL_BASE_HIGH_QUALITY is 5. I try after to change the
> costant
> > > given to pfDecal and print it's value and I obtain inconsistent value
> too.
> > > For example with PFDECAL_LAYER (is 2 in pr.h) I obtain the value 11.
> > >
> > > Is there something wrong where I put the code or the problems not depend
> by
> > > me?
> > >
> > > Bye Lucia
> > >
> > > ----- Original Message -----
> > > From: "Brian Furtaw" <brian++at++sgi.com>
> > > To: "Lucia Cappellato" <l.cappellato++at++hsantalucia.it>
> > > Cc: <info-performer++at++sgi.com>
> > > Sent: Friday, June 01, 2001 3:16 PM
> > > Subject: Re: Flickering texture
> > >
> > > > pfDecal is a libpr function which means it needs to called from within
> > > > the DRAW process. You could make your call in the pfChannel DRAW
> > > > callback right before you call pfDraw(). Make sure you pfOverride the
> > > > pfDecal value so it does not get changed during the draw traversal. As
> > > > in this example from the pfDecal man page,
> > > >
> > > > Example 2:
> > > >
> > > > /* Override decaling mode to PFDECAL_OFF */
> > > > pfDecal(PFDECAL_OFF);
> > > > pfOverride(PFSTATE_DECAL, PF_ON);
> > > >
> > > > Brian
> > > >
> > > > > Lucia Cappellato wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > > I see that somebody in the last years has just sent a similar
> request.
> > > > > The suggest is to use the
> > > > > pfDecal(PFCEDAL_BASE_HIGH_QUALITY) function.
> > > > >
> > > > > I attempt but the problem there is too.
> > > > >
> > > > > I work with a onyx2 R10000 and Performer 2.2. The problem is in a
> > > > > model flt that I load from a file and so it'sn't a node that I
> create
> > > > > with performer functions. I put the call to pfDecal before the
> > > > > application enters in the main (simulation) loop and after I load
> the
> > > > > model and I initialize channel and window.
> > > > >
> > > > > I find anywhere where is the best place to put this call.
> > > > >
> > > > > bye Lucia
> > > >
> > > > --
> > > > ----oOOo---- ----oOOo---- ----oOOo---- ----oOOo----
> > > >
> > > > Brian Furtaw (brian++at++sgi.com)
> > > > Graphics Guru Office:(301)572-3293 Fax: (603)250-0370
> > > > 12200-G Plum Orchard Drive
> OpenGL/Performer/OpenInventor/ImageVision
> > > > Silver Spring, Maryland 20904 Volumizer/Optimizer/React/PCI Device
> > > > Drivers
> > > >
> >
> > --
> > ----oOOo---- ----oOOo---- ----oOOo---- ----oOOo----
> >
> > Brian Furtaw (brian++at++sgi.com)
> > Graphics Guru Office:(301)572-3293 Fax: (603)250-0370
> > 12200-G Plum Orchard Drive OpenGL/Performer/OpenInventor/ImageVision
> > Silver Spring, Maryland 20904 Volumizer/Optimizer/React/PCI Device
> > Drivers
> > -----------------------------------------------------------------------
> > List Archives, FAQ, FTP: http://www.sgi.com/software/performer/
> > Open Development Project: http://oss.sgi.com/projects/performer/
> > Submissions: info-performer++at++sgi.com
> > Admin. requests: info-performer-request++at++sgi.com
> >

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

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


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2b29 : Mon Jun 04 2001 - 08:27:00 PDT

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