Hi Wang Rui,

Sorry for the delay in getting to review your prosed binary format
plugin - I've been trying to clear the rather length backlog of
submissions and bugs... I'm pretty near back ontop of things again and
so look at the next steps beyond the OSG-2.9.6 dev release - and
towards OSG-3.x.

For the purposes of the discussion I'll just use your initial .bin
extension to denote the new plugin, this extensions isn't suitalbe to
role out as part of the OSG as it's has other established meanings,
but I don't think the naming of extension is critical at this point in
time - we'll just need to settle upon the extension when it comes to
making the next stable release.   So... given this I'll now dive into
my thoughts:

First up, the plugin on first review looks a lot cleaner and flexible
than the present .ive plugin and is certainly a worthy replacement for
it, and would suggest aiming to make this new binary plugin or a
derivative from it the main binary format for OSG-3.x.

Second up, the format/implementation looks capable of being backwards
compatible, and possible forwards compatible in a limited way.  For
instance I would guess that we'd be able to handle files that the
plugin doesn't know about if the new additions are only in the form of
classes that it doesn't already know about.  It doesn't look like it'd
be able to handle changes such as removal, additions to or refactoring
of the classes that the old plugin supports and the new more modern
file provides in a modified way.  It would be very cool if we could
achieve the ability to handle this.  Perhaps having individual
versions of wrappers for each class could achieve this.

My third observation is that providing a dual ascii + binary
format/parser wouldn't be possible right now as the .bin format/plugin
as it stands implicitly reads/writes properties of each class - they
have can only be successfully read if the properties are arranged in a
specific order.  To enable ascii support one would have to add a
property name as an identifier when reading properties.  However, one
could do this and just ignore it for binary formats.  Perhaps another
possibility would be treat each property as something that should be
wrapped, with class wrappers aggregating the individual property
wrappers.

Forth thought is that in terms of on maintenance of multiple native
formats it's already a bit of pain trying to keep the .osg and .ive
plugins up to date, consistent and bug free.  Adding another hand
maintained format to these will just make the whole process even more
problematic.  Replacing .ive with .bin would improve things because
.bin is simply a better approach with it's more decoupled and
extensible design, but... even better would be to be able to replace
both .osg and .ive with a further evolved .bin.

--

So what steps next... runtime testing... adding support for one other
NodeKit to test how the plugins can be extended at runtime.  Perhaps
the core of .bin could be integrated into osgDB like the current .osg
parsing and have the wrappers provided by the osg, osgText, osgFX
plugins in the same way as the present wrappers... just maintain the
two sets of wrappers in side by side subdirectories from each of these
plugins.

Thoughts?
Robert.
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to