Rémi Arnaud (remi++at++remi.engr.sgi.com)
Mon, 18 Aug 1997 22:43:08 -0700 (PDT)
OpenGL needs a context to be able to talk to the graphic pipeline (draw
anything). Having more than one application talking to the graphic
is not very efficient at it cause OpenGL context switching, that's why
Performer has a Draw process, that is the only process talking to the
pipeline at a time. Performer has a Display List that capture all
performer draw/apply command, so the display list can be executed in
the Draw process in an efficient way.
If you want a process to create display list for the Draw Process, this
process must have a shared space (sproc) and have a context that share
the texture and display list from the Draw Process (see glXCreateContext()).
The App process is forked, and does not have a graphic context...
If you go that way, you will have one more problem that is how to synchronize
the HUD with the rest of the simulation. If the APP creates a new HUD that
is going to be displaed immediatly by the DrawProcess, but you are running
in a CULL/DRAW pipeline model, the HUD will not be in phase with the
main image, exactly 1 frame too early in that case.
What you can do, is using the performer GeoSet objects, and the pfCycleBuffer that
let you change a geoset in the application, and get the right information
to the draw process. You can also use a Performer display list that you
will compute in the app, and render in the Draw Process. Even in that case
you will appreciate the pfCycleBuffer mechanism that will help you to manage
the memory associated with that.
Regards
_ / _ _
|_) _ ._ _ o /\ |_)|\ | /\ | || \
| \(/_| | || /--\| \| \|/--\|_||_/
=======================================================================
List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer/
Submissions: info-performer++at++sgi.com
Admin. requests: info-performer-request++at++sgi.com
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:55:45 PDT