OpenRM Scene Graph 1.6.0 review

by on

OpenRM Scene Graph is a scene graph API that implements fully piplined-parallelized multistage and multithreaded rendering, and uses

License: LGPL (GNU Lesser General Public License)
File size: 419K
Developer: E. Wes Bethel
0 stars award from

OpenRM Scene Graph is a scene graph API that implements fully piplined-parallelized multistage and multithreaded rendering, and uses OpenGL as a graphics platform for hardware acceleration.

A scene graph model is a useful way to organize data for rendering in a way that is particularly efficient for graphics display engines. The reason you might want to use a scene graph API for development is because you can reuse code and ideas, and benefit from others' work in the area of detailed graphics platform programming.

In other words, a scene graph API is a framework for building graphics applications, and since all graphics applications need some sort of similar framework, you, as a developer, benefit from the OpenRM framework.

The ultimate goals of OpenRM include high performance rendering, a full-featured scene graph model, flexibility and extensibilty.

Here are some key features of "OpenRM Scene Graph":
Support for application-supplied OpenGL texture object and display list identifiers.
Multitexturing support.
Support for distributed memory parallel applications when combined with Chromium. This feature is particularly useful for running parallel graphics and visualization applications on Linux clusters equipped with high performance commodity graphics hardware.
Full multistage and multithreaded (parallel) rendering implemented on Unix/Linux/Win32.
Support for precision, constant-rate rendering on Unix/Linux/Win32.
Full support for hardware accelerated offscreen rendering on Unix/Linux, and for offscreen OpenGL (DIB) rendering on Win32.
Image loader/writer support for JPEG and PPM formats.
Rich lighting environment and light sources, including support for OpenGL spotlights.
Atmospheric effects via OpenGL fogging.
Rich texturing environment, including support for 1D, 2D and 3D textures.
Thread-safe scene graph implementation that supports multiple rendering threads reading from a single scene graph, and drawing to multiple windows.
Thread-safe scene graph implementation that supports multiple application threads simultaneously writing to a single scene graph.
Support for tiled surface display. OpenRM is compatible with CAVELib, and other frameworks for creating multi-display graphics applications.
Configurable multpass rendering: 3D Opaque/3D Transparent/2D.
Full attribute inheritence along scene graph depth. No weird sibling inheritance as in some other scene graph implementations.
Support for binocular analglyph and multibuffered stereo.
Object/Objects picking.
First class support for user-written immediate mode primitives.
Built-in primitives that provide pretesselated surface models of cones/cylinders/spheres using triangles (not quads, as in GLU).
Direct volume rendering support on Unix and Windows platforms (RM Scene Graph, the father of OpenRM, was probably the first scene graph API to provide first-class support for direct volume rendering).
Full (read) access to render state in node callbacks.
Model switching callbacks, combined with application-provided code can be used to implement LOD manipulation based upon model switching or other view dependent operations, such as frustum culling.
Node traversal masks for detailed and fine rendering control.
Multiple views and/or viewports within a window can be used to create multiple views of a 3D scene, or annotation displays such as a "Heads-up display" for out-the-window flyover views.
OpenGL vertex arrays used wherever possible/feasible.
Use of OpenGL display lists for built-in primitives wherever possible.
Sprite and bitmap primitives in 2D or 3D.
Imaging model supports index-color or true color image data in textures and sprites, as well as scale/bias.
Hardware assisted imaging operations, including image resize
One text model portable across X11 and Win32 .
Built for use on both X11 and Win32 platforms.
Direct control over the depth buffer, including background depth buffer images.
Direct control over the color planes of the framebuffer, including background color image tiles.
User defined clipping planes.
Applications can use their own event loop handler, or use and modify the RMaux event loop code. OpenRM can be used to build a standalone application or can be combined with other applications or toolkits that provide event loop management (such as the CAVElibrary).
Easy to use OpenRM with other event and widget/UI frameworks, like the Fast Light Toolkit (FLTK). Coding examples for combining OpenRM with FLTK are freely downloadable.
Loads of documentation. The OpenRM documentation includes web-based "man pages" for the API, details about the demonstration programs, links to technical papers and resources, and a publication quality, 450+ page Programming Guide.

OpenRM Scene Graph 1.6.0 keywords