I can think of a least two ways to support multiple backends without sacrificing performance. 1) We generally acknowledge that a system of wrappers will provide portability (to different backends) at the expense of performance. However, a scene graph could be designed in such a way that it supports one backend "close to the metal" and other backends using wrappers. Consider the existing Drawable draw callback; if no callback is attached, we use the native draw mechanism, otherwise the callback (jump through function pointer) handles the drawing. Such a mechanism could be used to support OpenGL natively and other backends through the callback. 2) Use a factory pattern. On an unrelated note, I've heard many people assert that gaming has driven the creation of high-performance rendering hardware. This is an incomplete picture. In the mid-90s when commercial (non-workstation) graphics hardware first became available, getting gamers to use hardware acceleration was a hard sell. They mostly snubbed their noses at PC graphics cards, preferring to code software renderers in assembly to get the performance they needed. Up until the late-90s, it was high-end CAD, molecular modeling, etc., that was solely responsible for the growth of accelerated 3D graphics and eventual emergence of commercial graphics hardware. Paul Martz Skew Matrix Software LLC http://www.skew-matrix.com <http://www.skew-matrix.com/> +1 303 859 9466
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

