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

Reply via email to