|
 
 
 
 
 
 
|
Features
The current version is 1.2. That number implies two things. It's the second
table version that we're putting out, it's by no means the last, so not all of the
things that we want to do are done (see the roadmap for a glimpse of things to come). It also
implies that it's a stable release, so the focus was not on buzzword
completeness or performance, but rather on stabilizing interfaces and creating
documentation and examples.
Nonetheless, we do have a nice list of supported features, some of which
are unique, which make OpenSG a pretty useful scenegraph:
- Multithreaded Asynchronous Scenegraph Manipulation
One of the central parts of the OpenSG design. The OpenSG data structures are
set up in a way that allows multiple independent threads to manipulate the
scenegraph independently without interfering with each other.
- View Volume Culling
Only render what's in the field of view. No biggie, but really useful in large
scenes.
- Portability
The whole system works on Irix, Linux and Windows, and is compiled daily on each
to ensure that changes that break portability are not detected when it's too
late to fix them.
- State Sorting
To efficiently use graphics hardware, the OpenGL state has to be changed as
rarely as possible. Sorting the visible objects by state is the main way to do
that.
- Striper
Turning independent triangles and quads into connected strips significantly
increase performance.
- Loader: VRML97, OBJ, OFF, RAW
These are the loaders that we have. Lodestone will take care of the rest.
- Standard Nodeset
The standard scenegraph nodes like Groups, Transformations (Matrix and
Component), Level of Detail and geometry are supported.
- Flexible Geometry
The Geometry node can handle all OpenGL primitives, and can handle all of them
mixed in one node. Thus there's no need to create multiple objects just to mix
triangle strips and fans.
- Runtime Changeable Type System
All objects are created from prototypes that can be exchanged at runtime. This
allows easy adaption of global defaults, as well as exchanging system objects
with newer versions better suited to the application at hand, at runtime.
- Reflective Structures
A flexible type system like the one mentioned above demands flexible tools. TO
allow building those all structures can give out information about themselves
and their data. This allows writing very generic tools. The OSG write for
example will not have to touched for any new structures that are added to the
system.
|