Added override for broken bindings

This commit is contained in:
Robert Osfield
2019-02-20 16:31:58 +00:00
parent 625c771641
commit 971eba37ad

View File

@@ -56,7 +56,7 @@ struct GeometryArrayGatherer
GeometryArrayGatherer(osg::Geometry& geometry)
{
add(geometry.getVertexArray());
add(geometry.getVertexArray(), osg::Array::BIND_PER_VERTEX);
add(geometry.getNormalArray());
add(geometry.getColorArray());
add(geometry.getSecondaryColorArray());
@@ -64,7 +64,7 @@ struct GeometryArrayGatherer
unsigned int i;
for(i=0;i<geometry.getNumTexCoordArrays();++i)
{
add(geometry.getTexCoordArray(i));
add(geometry.getTexCoordArray(i), osg::Array::BIND_PER_VERTEX);
}
for(i=0;i<geometry.getNumVertexAttribArrays();++i)
{
@@ -72,9 +72,16 @@ struct GeometryArrayGatherer
}
}
void add(osg::Array* array)
void add(osg::Array* array, osg::Array::Binding overrideBinding=osg::Array::BIND_UNDEFINED)
{
if (array && array->getBinding()==osg::Array::BIND_PER_VERTEX)
if (!array) return;
if (overrideBinding!=osg::Array::BIND_UNDEFINED && array->getBinding()!=overrideBinding)
{
array->setBinding(overrideBinding);
}
if (array->getBinding()==osg::Array::BIND_PER_VERTEX)
{
_arrayList.push_back(array);
}