Views
currently work is done on support for multiple windows.
ideas:
+ each gemwindow represents a window - specifically an on-screen window or an output (ieee1394, file, ?)
+ there should be objects to output to other resssources (e.g. pbuffer,...) - offscreen rendering shouldn't have to worry about framerates, because it's assumed they are used every rendercycle
+ rendering is controlled by gemcontrol
+ it should be possible to attach gemheads to certain "rendering contexts", e.g. to render a gemlist only to a specific window - offscreen windows probably need to be treated differently, because there can be multiple offscreen windows rendered in the same pass; but we still want to be able to associate more than one gem chain to an offscreen...probably we should associate onscreen windows by a name/symbol, and offscreens by a range of rendering priorities (ie. gemhead 46-52 go to offscreen 1, but 53-55 got to offscreen 2, then offscreen 1 and 2 are rendered to [gemhead 60 firstscreen]?)
+ RenderTrigger: each gem-object should receive a trigger message once a render-cycle. if several GemOutputs are connected to one gemcontrol, gem-objects will receive the trigger-message only once and not for each GemOutput.
problems and possible solutions:
timing issues
what if several "contexts" run at different speed
solution: just do it: compile each gemhead into a display-list and rebuild it only, if it was modified (what for do we have the setModified()-thingie)
sharing display-lists:
display-lists are server-based and can only be shared on one display/server. it is impossible to share display-lists across several (remote) displays (might only be of interest for linux)
possible solution: http://chromium.sf.net (non-invasive!, so we don't need to care)
compatibility:
a big MUST is compatibility with prior versions of Gem.
solution: use gemwindow and gemcontrol to simulate a gemwin
associating gemlists with contexts.
see ContextNames
objects involved:
gemwindow, GemOutput
GemBase (?)
controlling the rendering GemcontrolGemoutput
code that is affected:
obviously: GemOutput, gemwindow
obviously: GemMan, gemcontrol
GemCache: currently rather useless; might get important again, see RenderTrigger
lighting ! (lights used to be allocated globally, this will not work at all for multiple openGL-contexts,...)