Archon::Render::Conductor Struct Reference

The purpose of a Conductor is to handle paralellized rendering of an scene. More...

#include <archon/render/conductor.H>

Inheritance diagram for Archon::Render::Conductor:

Inheritance graph
[legend]
Collaboration diagram for Archon::Render::Conductor:

Collaboration graph
[legend]
List of all members.

Public Member Functions

Ref< PipeaddPipe (Ref< Display::Visual >, bool direct=true)
void render ()
 Is not re-entrant.
Ref< PipegetMasterPipe () const
void terminate ()
 Send termination requests to all the rendering threads.

Static Public Member Functions

static Ref< Conductorcreate ()

Classes

struct  Slave

Detailed Description

The purpose of a Conductor is to handle paralellized rendering of an scene.

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.


Member Function Documentation

void Archon::Render::Conductor::terminate  ) 
 

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.


The documentation for this struct was generated from the following files:
Generated on Sun Jul 30 22:57:08 2006 for Archon by  doxygen 1.4.4