[GEM-dev] musings on multiple_window

james tittle tigital at mac.com
Wed Feb 2 16:26:46 CET 2005


On Feb 2, 2005, at 3:46 AM, IOhannes m zmoelnig wrote:

> james tittle wrote:
>> heya,
>> ...so, cgc and I chatted last nite, and I'm wondering if it's 
>> plausible
>
> men, where do you do it ?

...hacked hotline server ("underline") with crypto:  it was late...I 
have been poking in to #dataflow, so maybe we should set up a time?  
Or, I can try to log in earlier...

>> to add another symbol to gemhead for gemman to manage...the priority 
>> system would still be used for rendering order, but the new symbol 
>> would be used to determine which output/glcontext the render would go 
>> to (kinda like pd's send/receive objects):  by default (ie. no extra 
>> symbol), output would go to the "main" gemwindow...if there is a 
>> symbol, then the output would go to the associated display output:  
>> so we'd need to add a symbol to each gemoutput:
>> [gembuffer offscreen1]:  this would be for pBuffer
>> [gemwindow onscreen1]:  this would be for primary display
>> [gemdv onscreen2]:  this would be a dv stream of the onscreen2 render
>> [gemwindow onscreen2]:  this would be for 2nd monitor display
>
> i would rather associate the "context" with the [gemcontrol] object.

...if you prefer "context" over "output", I was talking about them as 
the same thing (by context I mean the gl environment, which at the 
moment is just associated with windows)

>> ...then the gemheads would be something like the following:
>> [gemhead 43 offscreen1]:  this then renders to a pBuffer
>> [gemhead -1 onscreen1]:  this renders to the primary display
>> [gemhead -2 onscreen2]:  this renders to the 2nd monitor
>> ...we'd then need the output [gembuffer offscreen1] to allow binding 
>> to texture for texturing on objects, which could then perhaps be 
>> rendered into another buffer, textured, then rendered into a scene 
>> for screen display...
>
> that is exactly how i imagined it !

...yeah!  Althought it could mean we're all crazy...

> just one remark: the ordering of the context-name and the priority 
> should be arbitrary:
> eg: [gemhead 10 offscreen]
> [gemhead blur] (==[gemhead 50 blur])
> [gemhead bibs 32]
> ...

...no problem there, but I was thinking it'd be easier for backwards 
compatibility if we kept an ordering of priority then context name:  if 
we can manage backwards compat. with arbitrary ordering, even better!

> and probably "main" (or rather "") is attached to all contexts, like
>
> [gemcontrol] context ""
> [gemcontrol offscreen] context "offscreen"
> [gemcontrol ot] context "ot"
>
>
> [gemhead] renders to "", "offscreen", "ot"
> [gemhead ot] renders to "", "ot"

...yes, this is ok, but it may get confusing:  how do we define which 
is the "main"/"" context?  The first one created?  The last one in the 
priority chain (because everyone would be rendered prior to it)?

> and do we want to be able to connect one [gemhead] to multiple 
> explicit contexts ?
>
> like [gemhead here there everywhere]

...yep, this'd be good...

>> ...any obvious problems?
>
> yes, timing.
> i guess it would/could/should be possible to somehow handle 
> [gemcontrol]s at different rates, e.g. only render once a second into 
> a pbuffer (or even better: on demand!)
>
> how do we handle this efficiently ? (esp. with respect to "time-based" 
> objects, like [pix_movie] in auto-mode or particle-systems)

...have to admit I haven't looked much at this, but I will:  what are 
the likely situations that could trip us up?

...otoh, couldn't we duplicate what is done now i pix_film?  I mean, 
it's possible atm to run one film in auto-mode, and another in 
metro/"by-the-frame" mode:  wouldn't this be our solution?

...another thought to take us further:  glGenTextures() and 
glGenPrograms() both return unique id's for their association:  I think 
these should also be globally accessible, perhaps by symbol or patch 
connection...this would be useful for manipulating the different 
texture units for multitexturing, plus it allows us to load a vertex or 
fragment program once into memory and continuously refer to it as 
needed, rather than loading the whole program every frame...

whew,
jamie





More information about the GEM-dev mailing list