Version 1 (modified by 14 years ago) (diff) | ,
---|
Table of Contents
Funktion des ADD_LIST_SERIALIZER(NAME, TYPE):
NAME: Name der public Funktion, unter der der Vector gelesen und geschrieben werden kann TYPE: Typ der Liste. Um es übersichtlich zu halten, muss ein public Typedef durchgeführt werden. dieser kann gemäss c++ syntax mit node::typedef genutzt werden.
Bsp: ADD_LIST_SERIALIZER( ClipPlaneList?, osg::ClipNode::ClipPlaneList? );
Name der Get/Set? Funktionen:
- getClipPlaneList();
- setClipPlaneList(..);
Typdefinition des vectors:
- typedef std::vector<ref_ptr<ClipPlane?> > ClipPlaneList?
zu finden ist dieser Typ gemäß c++ Syntax mit namespace::classname::type (daher muss der typedef public sein, sonst ist er ja von aussen nicht sichtbar)
->zu serialisierendes Element wäre dann im Beispiel: osg::Clipnode::ClipPlaneList?
Wichtig bei enums:
enum <typename> {VA1, VAL2, ...}
variable muss dann anders heißen als der type. Der wrapper NAME muss identisch lauten wie der enum Typ.
osgDB::ReaderWriter?* rw = osgDB::Registry::instance()->getReaderWriterForExtension("osgb"); if ( rw ) {
osgDB::ReaderWriter::WriteResult? wr = rw->writeNode( *scene, ostream );
osgDB::ReaderWriter::ReadResult? rr = rw->readNode( istream ); return rr.takeNode(); Node mit takeNode entgegennehmen.
}
Um die Nodes zu komprimieren, muss osgDB::ReaderWriter?->readNode(..) und osgDB::ReaderWriter?->writeNode(..) die entsprechende Option mitgegeben werden: "compressor=zlib"
Bsp: osgDB::ReaderWriter::WriteResult? wr = rw->writeNode( *scene, ostream, new osgDB::Options("WriteImageHint?=IncludeData? Compressor=zlib") ); osgDB::ReaderWriter::ReadResult? rr = rw->readNode( istream, new osgDB::Options("WriteImageHint?=IncludeData? Compressor=zlib") );