From: Volodymyr Kindratenko (kindr++at++ncsa.uiuc.edu)
Date: 10/30/2003 07:30:31
This is almost what I did initially, except I was using texture subload
instead of glCopyTexSubImage2D. This does not work however when the same
texture needs to be shared across multiple pipes.
Volodymyr
> -----Original Message-----
> From: Brian Furtaw [mailto:brian++at++sgi.com]
> Sent: Thursday, October 30, 2003 6:40 AM
> To: Volodymyr Kindratenko
> Cc: 'Dorosky, Christopher G'; 'Dick Rous'; info-performer++at++sgi.com
> Subject: Re: [info-performer] Subload pfTexture across multiple pipes
>
>
> Try this create two pfChannels attach the rear view mirror channel to
> your pfPipeWindow first then your out-the-window(OTW) channel second.
> This will cause Performer to render them in the order you
> attached them.
>
> In the Channel DRAW callback for the rearview mirror,
> (pfChannel::setTravFuncs(PFTRAV_DRAW,...) ) call
> glCopyTexSubImage2D ()
> to move the pixels from the rearview channel to a texture
> that will be
> applied when the OTW channel is rendered.
>
> Rearview channel draw callback...
>
> RearChanDraw() {
>
> chan->clear();
>
> // pre -Draw stuff
>
> pfDraw();
>
> // copy pixels to texture
> glCopyTexSubImage2D (...);
>
> }
>
> Brian
>
> Volodymyr Kindratenko wrote:
> > Chris:
> >
> > Thanks for the explanation, it helps.
> >
> > Well, I came up with a different solution. I render the
> mirror image
> > in a separate pfPipeWindow and copy it from the screen
> buffer to the
> > texture's image memory via glReadPixels. This is done in the
> > pfPipeWindow's channel draw callback. This works as long as
> > pfPipeWindow is visible on the screen. Setting pfPipeWindow type to
> > PFPWIN_TYPE_PBUFFER results in not calling the
> pfPipeWindow's channel
> > draw callback, so, no texture is rendered. How can I render to an
> > off-screen buffer?
> >
> > Volodymyr
> >
> >
> >>-----Original Message-----
> >>From: Dorosky, Christopher G [mailto:christopher.g.dorosky++at++lmco.com]
> >>Sent: Wednesday, October 29, 2003 4:27 PM
> >>To: Volodymyr Kindratenko; Dick Rous
> >>Cc: info-performer++at++sgi.com
> >>Subject: RE: [info-performer] Subload pfTexture across
> multiple pipes
> >>
> >>
> >>You have to subload them on each pipe.
> >>No way around it, unless you want to take the frame hit and
> >>have Performer call the tex->load() implicitly.
> >>
> >>Pipe 0 CANNOT share it's texture memory with Pipe 1.
> >>Channel 0 CAN (and does) share it's texture memory with
> >>channel 1, IF Channel 0&1 are on the same pipe.
> >>
> >>That saying was misleading. pfTexture's can have different
> >>images in different pipes. Both must be directly subloaded,
> >>even if they are the same.
> >>
> >>Think of the texture beign texture for a tank. One pipe could
> >>be visual, the other IR. Possibly the same pfTexture, but
> >>different image data.
> >>
> >>Chris
> >>
> >>-----Original Message-----
> >>From: owner-info-performer++at++performer.engr.sgi.com
> >>[mailto:owner-info-performer++at++performer.engr.sgi.com]On Behalf
> >>Of Volodymyr Kindratenko
> >>Sent: Wednesday, October 29, 2003 10:20 AM
> >>To: 'Dick Rous'
> >>Cc: info-performer++at++sgi.com
> >>Subject: RE: [info-performer] Subload pfTexture across
> multiple pipes
> >>
> >>
> >>Dick:
> >>
> >>Actually, it does not, and why should it be? Ideally I want
> >>the texture image to be rendered only once on a separate pipe
> >>and then be distributed to the remaining pipes (4-IR SGI
> >>connected to a 3-wall CAVE). At the moment, the texture
> >>rendering channel is attached to one of the 3 pipes used to
> >>render the CAVE imagery. And sure enough, this pipe has the
> >>right texture. How can I grab this texture and distribute it
> >>to the remaining channels?
> >>
> >>Chapter 9. Graphics State from the OpenGL Performer
> Programmer's Guide
> >>says:
> >>"... pfSubloadTex() and pfSubloadTexLevel() can also be used
> >>in the drawing process to do an immediate load of texture
> >>memory managed by the given pfTexture and these routines
> >>allow you to specify all loading parameters (source, origin,
> >>size, etc.). THIS IS USEFUL FOR LOADING DIFFERENT IMAGES FOR
> >>THE SAME pfTexture IN DIFFERENT GRAPHICS PIPELINES. ..." And
> >>I need just the opposite, loading the same image in different
> >>graphics pipelines.
> >>
> >>Volodymyr
> >>
> >>
> >>>-----Original Message-----
> >>>From: Dick Rous [mailto:dick++at++sgi.com]
> >>>Sent: Wednesday, October 29, 2003 4:48 AM
> >>>To: 'Volodymyr Kindratenko'; info-performer++at++sgi.com
> >>>Subject: RE: [info-performer] Subload pfTexture across
> >>
> >>multiple pipes
> >>
> >>>
> >>>Have you checked if the subload code in the draw callback
> is executed
> >>>for each pipe?
> >>>
> >>>- Dick.
> >>>
> >>>
> >>>>-----Original Message-----
> >>>>From: Volodymyr Kindratenko [mailto:kindr++at++ncsa.uiuc.edu]
> >>>>Sent: Wednesday, 29 October, 2003 01:08
> >>>>To: info-performer++at++sgi.com
> >>>>Subject: [info-performer] Subload pfTexture across multiple pipes
> >>>>
> >>>>
> >>>>
> >>>> Hello:
> >>>>
> >>>> I need to build a rear view mirror for a driver
> >>>>simulator. To do
> >>>>this, I define a separate channel for rendering rear view mirror
> >>>>image and in that channel's draw callback I subload the relevant
> >>>>portion of the frame
> >>>>buffer to the appropriate pfTexture. This works just fine on
> >>>>a single pipe
> >>>>system. How can I share this texture across multiple pipes
> >>>>(CAVE)? In the
> >>>>CAVE I see that the correct image is applied to a portion of
> >>>>the mirror
> >>>>polygon residing on the front wall (I use the front wall's
> >>>>pipe rendering
> >>>>the rear view channel), and nothing is applied to the portion
> >>>>of the polygon
> >>>>residing for example on the left wall. Basically, the
> >>>>texture image is not
> >>>>shared between the pipes. Please help!
> >>>>
> >>>> Volodymyr Kindratenko
> >>>> NCSA, UIUC
> >>>>
> >>>>
> >>>>--------------------------------------------------------------
> >>>>---------
> >>>> List Archives, Info, FAQ:
> >>
> >>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
> >>>>--------------------------------------------------------------
> >>>>---------
> >>>>
> >>>
> >>
> >>--------------------------------------------------------------
> >>---------
> >> List Archives, Info, FAQ: 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
> >>--------------------------------------------------------------
> >>---------
> >>
> >
> >
> >
> >
> --------------------------------------------------------------
> ---------
> > List Archives, Info, FAQ: 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) Mailstop: DSE-2612
> Graphics Guru Office:(301)814.6858
> Fax: (253)323-8182
> 12200-G Plum Orchard Drive OpenGL/OpenGL
> Performer/Commodity Graphics
> Silver Spring, Maryland 20904 Solutions and Integration Services
>
This archive was generated by hypermail 2b29 : Thu Oct 30 2003 - 07:34:42 PST