#include <archon/render/conductor.H>
Inheritance diagram for Archon::Render::Conductor:
Public Member Functions | |
Ref< Pipe > | addPipe (Ref< Display::Visual >, bool direct=true) |
void | render () |
Is not re-entrant. | |
Ref< Pipe > | getMasterPipe () const |
void | terminate () |
Send termination requests to all the rendering threads. | |
Static Public Member Functions | |
static Ref< Conductor > | create () |
Classes | |
struct | Slave |
It does this by managing several rendering threads. Each thread has its own dedicated rendering pipe.
The number of pipes (threads) is crusial in terms of performance when rendering on systems with multiple hardware rendering pipedlines. To maximize hardware utilization on susch systems the number of pipes (threads) should mach the number of physical rendering pipelines allocated to the application.
Rendering pipelines are generally virtualized, meaning that it is possible to allocate more rendering contexts than the number of available hardware pipelines (just like it is possible to create more processes than the number of CPUs).
In fact, it may be a good thing for performance to deploy two or more software pipes on systems with only one hardware pipeline. Imagine that you are to render a stereo view of your scene and your scene rendering fuction is CPU limited due some complex processing during rendering. If you render the two views sequentially through one software pipe you would have your rendering hardware idle some of the time. To achive higher utilization of the single hardware pipeline, you should render the two views in parallel through two software pipes. If your system features more than one CPU, this would reduce the idle time of your rendering hardware.
It is the responsibility of the application to add channels to each rendering pipe. A channel corresponds to a single invocation of your scene rendering function from a certain viewpoint onto a certain viewport in a certain window.
Every rendering context owned by this conductor shares display lists and textures.
Definition at line 67 of file conductor.H.
|
Send termination requests to all the rendering threads. This must be done when you stop using the Conductor. Definition at line 130 of file conductor.C. |