External managers

Draw manager

The draw manager provides support for client applications that need access to graphics API-specific functionality. A draw manager defines a base class application interface that is customized for a specific graphics API. Since the draw manager is specific to an API, it allows for use of API specific features. For example, a scene graph API has a custom interface that queries the application for the scene graph to render. A direct mode rendering API, such as OpenGL, has an interface that defines a draw method to send all graphics rendering commands. Customizing the draw managers for specific APIs allows for maximum application performance because the application can make use of any advanced API features the developer desires.

Draw managers manage all the details specific to each API. They handle the details of configuring the settings of the API, setting up viewing parameters for each frame, and rendering the views. The draw manager also manages API-specific windowing and graphic context creation. Because all the graphics API specific details are captured in the draw managers, VR Juggler maintains portability to many graphics APIs.

Other external managers

Currently VR Juggler has no other external managers, but we expect that this will be a major area for future extension.

New external managers would function much like the draw manager by providing applications with interfaces that are specific to the type of service offered to the application. As long as the applications make use of the encapsulated features using the interface provided, VR Juggler will take care of the details of keeping the manager synchronized with the rest of the system.

An example of an external manager that is currently under development is a sound manager. The sound manager will provide a unified interface for loading and play sound samples. The actual implementation will adapt to the local system configuration and use whatever method is available to handle the sound. Since user applications will only access the sound system through this interface, their applications will move transparently from one sound system backend to another.