From Lukasz Izdebski , "I added write and read numInstances in PrimitiveSet."
This commit is contained in:
@@ -403,7 +403,12 @@ osg::PrimitiveSet* InputStream::readPrimitiveSet()
|
||||
|
||||
DEF_MAPPEE(PrimitiveType, type);
|
||||
DEF_MAPPEE(PrimitiveType, mode);
|
||||
unsigned int numInstances = 0u;
|
||||
*this >> type >> mode;
|
||||
if ( _fileVersion>96 )
|
||||
{
|
||||
*this >> numInstances;
|
||||
}
|
||||
|
||||
switch ( type.get() )
|
||||
{
|
||||
@@ -413,6 +418,7 @@ osg::PrimitiveSet* InputStream::readPrimitiveSet()
|
||||
*this >> first >> count;
|
||||
osg::DrawArrays* da = new osg::DrawArrays( mode.get(), first, count );
|
||||
primitive = da;
|
||||
primitive->setNumInstances( numInstances );
|
||||
}
|
||||
break;
|
||||
case ID_DRAWARRAY_LENGTH:
|
||||
@@ -427,6 +433,7 @@ osg::PrimitiveSet* InputStream::readPrimitiveSet()
|
||||
}
|
||||
*this >> END_BRACKET;
|
||||
primitive = dl;
|
||||
primitive->setNumInstances( numInstances );
|
||||
}
|
||||
break;
|
||||
case ID_DRAWELEMENTS_UBYTE:
|
||||
@@ -441,6 +448,7 @@ osg::PrimitiveSet* InputStream::readPrimitiveSet()
|
||||
}
|
||||
*this >> END_BRACKET;
|
||||
primitive = de;
|
||||
primitive->setNumInstances( numInstances );
|
||||
}
|
||||
break;
|
||||
case ID_DRAWELEMENTS_USHORT:
|
||||
@@ -455,6 +463,7 @@ osg::PrimitiveSet* InputStream::readPrimitiveSet()
|
||||
}
|
||||
*this >> END_BRACKET;
|
||||
primitive = de;
|
||||
primitive->setNumInstances( numInstances );
|
||||
}
|
||||
break;
|
||||
case ID_DRAWELEMENTS_UINT:
|
||||
@@ -469,6 +478,7 @@ osg::PrimitiveSet* InputStream::readPrimitiveSet()
|
||||
}
|
||||
*this >> END_BRACKET;
|
||||
primitive = de;
|
||||
primitive->setNumInstances( numInstances );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -261,7 +261,7 @@ void OutputStream::writePrimitiveSet( const osg::PrimitiveSet* p )
|
||||
*this << MAPPEE(PrimitiveType, ID_DRAWARRAYS);
|
||||
{
|
||||
const osg::DrawArrays* da = static_cast<const osg::DrawArrays*>(p);
|
||||
*this << MAPPEE(PrimitiveType, da->getMode())
|
||||
*this << MAPPEE(PrimitiveType, da->getMode()) << da->getNumInstances()
|
||||
<< da->getFirst() << da->getCount() << std::endl;
|
||||
}
|
||||
break;
|
||||
@@ -269,7 +269,7 @@ void OutputStream::writePrimitiveSet( const osg::PrimitiveSet* p )
|
||||
*this << MAPPEE(PrimitiveType, ID_DRAWARRAY_LENGTH);
|
||||
{
|
||||
const osg::DrawArrayLengths* dl = static_cast<const osg::DrawArrayLengths*>(p);
|
||||
*this << MAPPEE(PrimitiveType, dl->getMode()) << dl->getFirst();
|
||||
*this << MAPPEE(PrimitiveType, dl->getMode()) << dl->getNumInstances() << dl->getFirst();
|
||||
writeArrayImplementation( dl, dl->size(), 4 );
|
||||
}
|
||||
break;
|
||||
@@ -277,7 +277,7 @@ void OutputStream::writePrimitiveSet( const osg::PrimitiveSet* p )
|
||||
*this << MAPPEE(PrimitiveType, ID_DRAWELEMENTS_UBYTE);
|
||||
{
|
||||
const osg::DrawElementsUByte* de = static_cast<const osg::DrawElementsUByte*>(p);
|
||||
*this << MAPPEE(PrimitiveType, de->getMode());
|
||||
*this << MAPPEE(PrimitiveType, de->getMode()) << de->getNumInstances();
|
||||
writeArrayImplementation( de, de->size(), 4 );
|
||||
}
|
||||
break;
|
||||
@@ -285,7 +285,7 @@ void OutputStream::writePrimitiveSet( const osg::PrimitiveSet* p )
|
||||
*this << MAPPEE(PrimitiveType, ID_DRAWELEMENTS_USHORT);
|
||||
{
|
||||
const osg::DrawElementsUShort* de = static_cast<const osg::DrawElementsUShort*>(p);
|
||||
*this << MAPPEE(PrimitiveType, de->getMode());
|
||||
*this << MAPPEE(PrimitiveType, de->getMode()) << de->getNumInstances();
|
||||
writeArrayImplementation( de, de->size(), 4 );
|
||||
}
|
||||
break;
|
||||
@@ -293,7 +293,7 @@ void OutputStream::writePrimitiveSet( const osg::PrimitiveSet* p )
|
||||
*this << MAPPEE(PrimitiveType, ID_DRAWELEMENTS_UINT);
|
||||
{
|
||||
const osg::DrawElementsUInt* de = static_cast<const osg::DrawElementsUInt*>(p);
|
||||
*this << MAPPEE(PrimitiveType, de->getMode());
|
||||
*this << MAPPEE(PrimitiveType, de->getMode()) << de->getNumInstances();
|
||||
writeArrayImplementation( de, de->size(), 4 );
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user