add untested serializers for PrimitiveSetIndirect
This commit is contained in:
188
src/osgWrappers/serializers/osg/PrimitiveSetIndirect.cpp
Normal file
188
src/osgWrappers/serializers/osg/PrimitiveSetIndirect.cpp
Normal file
@@ -0,0 +1,188 @@
|
||||
#include <osg/PrimitiveSetIndirect>
|
||||
#include <osg/ValueObject>
|
||||
#include <osgDB/ObjectWrapper>
|
||||
#include <osgDB/InputStream>
|
||||
#include <osgDB/OutputStream>
|
||||
|
||||
namespace DACommandsArrays {
|
||||
REGISTER_OBJECT_WRAPPER( IndirectCommandDrawArrays,
|
||||
0,
|
||||
osg::IndirectCommandDrawArrays,
|
||||
"osg::Object osg::BufferData osg::IndirectCommandDrawArrays" )
|
||||
{
|
||||
{
|
||||
UPDATE_TO_VERSION_SCOPED( 147 )
|
||||
ADDED_ASSOCIATE("osg::BufferData")
|
||||
}
|
||||
}
|
||||
}
|
||||
namespace DECommandsArrays {
|
||||
REGISTER_OBJECT_WRAPPER( IndirectCommandDrawElements,
|
||||
0,
|
||||
osg::IndirectCommandDrawElements,
|
||||
"osg::Object osg::BufferData osg::IndirectCommandDrawElements" )
|
||||
{
|
||||
{
|
||||
UPDATE_TO_VERSION_SCOPED( 147 )
|
||||
ADDED_ASSOCIATE("osg::BufferData")
|
||||
}
|
||||
}
|
||||
}
|
||||
namespace DefaultDACommandsArrays {
|
||||
|
||||
|
||||
static bool checkDACommands( const osg::DefaultIndirectCommandDrawArrays& node )
|
||||
{
|
||||
return node.size()>0;
|
||||
}
|
||||
|
||||
static bool readDACommands( osgDB::InputStream& is, osg::DefaultIndirectCommandDrawArrays& node )
|
||||
{
|
||||
unsigned int elmt, size = 0; is >> size >> is.BEGIN_BRACKET;
|
||||
node.resize(size);
|
||||
for ( unsigned int i=0; i<size; ++i )
|
||||
{
|
||||
is >>elmt; node.count(i) = elmt;
|
||||
is >>elmt; node.instanceCount(i) = elmt;
|
||||
is >>elmt; node.first(i) = elmt;
|
||||
is >>elmt; node.baseInstance(i) = elmt;
|
||||
}
|
||||
is >> is.END_BRACKET;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool writeDACommands( osgDB::OutputStream& os, const osg::DefaultIndirectCommandDrawArrays& node )
|
||||
{
|
||||
unsigned int size = node.getNumElements();
|
||||
osg::DefaultIndirectCommandDrawArrays& nonconstnode =const_cast<osg::DefaultIndirectCommandDrawArrays&>(node);
|
||||
os << size << os.BEGIN_BRACKET << std::endl;
|
||||
for ( unsigned int i=0; i<size; ++i )
|
||||
{
|
||||
os << nonconstnode.count(i);
|
||||
os << nonconstnode.instanceCount(i);
|
||||
os << nonconstnode.first(i);
|
||||
os << nonconstnode.baseInstance(i);
|
||||
}
|
||||
os << os.END_BRACKET << std::endl;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
REGISTER_OBJECT_WRAPPER( osgDefaultIndirectCommandDrawArrays,
|
||||
new osg::DefaultIndirectCommandDrawArrays,
|
||||
osg::DefaultIndirectCommandDrawArrays,
|
||||
"osg::Object osg::BufferData osg::IndirectCommandDrawArrays osg::DefaultIndirectCommandDrawArrays" )
|
||||
{
|
||||
ADD_USER_SERIALIZER(DACommands);
|
||||
}
|
||||
}
|
||||
namespace DefaultDECommandsArrays {
|
||||
|
||||
static bool checkDECommands( const osg::DefaultIndirectCommandDrawElements& node )
|
||||
{
|
||||
return node.size()>0;
|
||||
}
|
||||
|
||||
static bool readDECommands( osgDB::InputStream& is, osg::DefaultIndirectCommandDrawElements& node )
|
||||
{
|
||||
unsigned int elmt, size = 0; is >> size >> is.BEGIN_BRACKET;
|
||||
node.resize(size);
|
||||
for ( unsigned int i=0; i<size; ++i )
|
||||
{
|
||||
is >>elmt; node.count(i) = elmt;
|
||||
is >>elmt; node.instanceCount(i) = elmt;
|
||||
is >>elmt; node.firstIndex(i) = elmt;
|
||||
is >>elmt; node.baseVertex(i) = elmt;
|
||||
is >>elmt; node.baseInstance(i) = elmt;
|
||||
}
|
||||
is >> is.END_BRACKET;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool writeDECommands( osgDB::OutputStream& os, const osg::DefaultIndirectCommandDrawElements& node )
|
||||
{
|
||||
unsigned int size = node.getNumElements();
|
||||
osg::DefaultIndirectCommandDrawElements& nonconstnode =const_cast<osg::DefaultIndirectCommandDrawElements&>(node);
|
||||
os << size << os.BEGIN_BRACKET << std::endl;
|
||||
for ( unsigned int i=0; i<size; ++i )
|
||||
{
|
||||
os << nonconstnode.count(i);
|
||||
os << nonconstnode.instanceCount(i);
|
||||
os << nonconstnode.firstIndex(i);
|
||||
os << nonconstnode.baseVertex(i);
|
||||
os << nonconstnode.baseInstance(i);
|
||||
}
|
||||
os << os.END_BRACKET << std::endl;
|
||||
return true;
|
||||
}
|
||||
|
||||
REGISTER_OBJECT_WRAPPER( osgDefaultIndirectCommandDrawElements,
|
||||
new osg::DefaultIndirectCommandDrawElements,
|
||||
osg::DefaultIndirectCommandDrawElements,
|
||||
"osg::Object osg::BufferData osg::IndirectCommandDrawElements osg::DefaultIndirectCommandDrawElements" )
|
||||
{
|
||||
{
|
||||
UPDATE_TO_VERSION_SCOPED( 147 )
|
||||
ADDED_ASSOCIATE("osg::BufferData")
|
||||
}
|
||||
ADD_USER_SERIALIZER(DECommands);
|
||||
}
|
||||
}
|
||||
namespace DrawArraysIndirectWrapper {
|
||||
|
||||
REGISTER_OBJECT_WRAPPER( DrawArraysIndirect,
|
||||
new osg::DrawArraysIndirect,
|
||||
osg::DrawArraysIndirect,
|
||||
"osg::Object osg::BufferData osg::PrimitiveSet osg::DrawArraysIndirect" )
|
||||
{
|
||||
ADD_OBJECT_SERIALIZER( IndirectCommandArray, osg::IndirectCommandDrawArrays ,new osg::DefaultIndirectCommandDrawArrays());
|
||||
ADD_UINT_SERIALIZER( FirstCommandToDraw, 0);
|
||||
ADD_INT_SERIALIZER( Stride, 0);
|
||||
}
|
||||
|
||||
}
|
||||
namespace MultiDrawArraysIndirectWrapper {
|
||||
|
||||
REGISTER_OBJECT_WRAPPER( MultiDrawArraysIndirect,
|
||||
new osg::MultiDrawArraysIndirect,
|
||||
osg::MultiDrawArraysIndirect,
|
||||
"osg::Object osg::BufferData osg::PrimitiveSet osg::DrawArraysIndirect osg::MultiDrawArraysIndirect" )
|
||||
{
|
||||
ADD_UINT_SERIALIZER( NumCommandsToDraw, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
namespace DrawElementsIndirectWrapper {
|
||||
|
||||
REGISTER_OBJECT_WRAPPER( DrawElementsIndirect,
|
||||
0,
|
||||
osg::DrawElementsIndirect,
|
||||
"osg::Object osg::BufferData osg::PrimitiveSet osg::DrawElementsIndirect" )
|
||||
{
|
||||
ADD_OBJECT_SERIALIZER( IndirectCommandArray, osg::IndirectCommandDrawElements, new osg::DefaultIndirectCommandDrawElements());
|
||||
ADD_UINT_SERIALIZER( FirstCommandToDraw, 0);
|
||||
ADD_INT_SERIALIZER( Stride, 0);
|
||||
}
|
||||
|
||||
}
|
||||
#define INDIRECTDRAW_ELEMENTS_WRAPPER( DRAWELEMENTS, ELEMENTTYPE ) \
|
||||
namespace Wrapper##DRAWELEMENTS { \
|
||||
REGISTER_OBJECT_WRAPPER( DRAWELEMENTS, new osg::DRAWELEMENTS, osg::DRAWELEMENTS, "osg::Object osg::BufferData osg::PrimitiveSet osg::IndirectDrawElements osg::"#DRAWELEMENTS) \
|
||||
{ \
|
||||
ADD_ISAVECTOR_SERIALIZER( vector, osgDB::BaseSerializer::ELEMENTTYPE, 4 ); \
|
||||
} \
|
||||
}\
|
||||
namespace WrapperMulti##DRAWELEMENTS { \
|
||||
REGISTER_OBJECT_WRAPPER( Multi##DRAWELEMENTS, new osg::Multi##DRAWELEMENTS, osg::Multi##DRAWELEMENTS, "osg::Object osg::BufferData osg::PrimitiveSet osg::IndirectDrawElements osg::"#DRAWELEMENTS" osg::Multi"#DRAWELEMENTS) \
|
||||
{ \
|
||||
ADD_UINT_SERIALIZER( NumCommandsToDraw, 0);\
|
||||
} \
|
||||
}\
|
||||
|
||||
|
||||
INDIRECTDRAW_ELEMENTS_WRAPPER( DrawElementsIndirectUByte, RW_UCHAR )
|
||||
INDIRECTDRAW_ELEMENTS_WRAPPER( DrawElementsIndirectUShort, RW_USHORT )
|
||||
INDIRECTDRAW_ELEMENTS_WRAPPER( DrawElementsIndirectUInt, RW_UINT )
|
||||
|
||||
|
||||
Reference in New Issue
Block a user