From 35eb53cc95b2ac781a45a24ce4f772d368b1ac3b Mon Sep 17 00:00:00 2001 From: Julien Valentin Date: Wed, 2 Aug 2017 22:10:02 +0200 Subject: [PATCH] add MDI support --- src/osgUtil/DrawElementTypeSimplifier.cpp | 39 +++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/osgUtil/DrawElementTypeSimplifier.cpp b/src/osgUtil/DrawElementTypeSimplifier.cpp index 6397f8e06..14f359649 100644 --- a/src/osgUtil/DrawElementTypeSimplifier.cpp +++ b/src/osgUtil/DrawElementTypeSimplifier.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -61,6 +62,44 @@ void DrawElementTypeSimplifier::simplify(osg::Geometry & geometry) const break; } + case osg::PrimitiveSet::DrawElementsUShortIndirectPrimitiveType: + { + osg::DrawElementsIndirectUShort & de = *static_cast(it->get()); + + max = getMax(de); + if (max < 255) *it = copy(de); + + break; + } + case osg::PrimitiveSet::DrawElementsUIntIndirectPrimitiveType: + { + osg::DrawElementsIndirectUInt & de = *static_cast(it->get()); + + max = getMax(de); + if (max < 256) *it = copy(de); + else if (max < 65536) *it = copy(de); + + break; + } + case osg::PrimitiveSet::MultiDrawElementsUShortIndirectPrimitiveType: + { + osg::MultiDrawElementsIndirectUShort & de = *static_cast(it->get()); + + max = getMax(de); + if (max < 255) *it = copy(de); + + break; + } + case osg::PrimitiveSet::MultiDrawElementsUIntIndirectPrimitiveType: + { + osg::MultiDrawElementsIndirectUInt & de = *static_cast(it->get()); + + max = getMax(de); + if (max < 256) *it = copy(de); + else if (max < 65536) *it = copy(de); + + break; + } default: break; } }