Added handling of vertex buffer objects into osg::Geometry copy constructor.
This commit is contained in:
parent
ea98b1a9f8
commit
b622a99178
@ -64,6 +64,9 @@ class OSG_EXPORT CopyOp
|
|||||||
inline CopyOp(CopyFlags flags=SHALLOW_COPY):_flags(flags) {}
|
inline CopyOp(CopyFlags flags=SHALLOW_COPY):_flags(flags) {}
|
||||||
virtual ~CopyOp() {}
|
virtual ~CopyOp() {}
|
||||||
|
|
||||||
|
void setCopyFlags(CopyFlags flags) { _flags = flags; }
|
||||||
|
CopyFlags getCopyFlags() const { return _flags; }
|
||||||
|
|
||||||
virtual Referenced* operator() (const Referenced* ref) const;
|
virtual Referenced* operator() (const Referenced* ref) const;
|
||||||
virtual Object* operator() (const Object* obj) const;
|
virtual Object* operator() (const Object* obj) const;
|
||||||
virtual Node* operator() (const Node* node) const;
|
virtual Node* operator() (const Node* node) const;
|
||||||
|
@ -79,6 +79,18 @@ Geometry::Geometry(const Geometry& geometry,const CopyOp& copyop):
|
|||||||
{
|
{
|
||||||
_vertexAttribList.push_back(ArrayData(*vitr, copyop));
|
_vertexAttribList.push_back(ArrayData(*vitr, copyop));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((copyop.getCopyFlags() & osg::CopyOp::DEEP_COPY_ARRAYS))
|
||||||
|
{
|
||||||
|
if (_useVertexBufferObjects)
|
||||||
|
{
|
||||||
|
// copying of arrays doesn't set up buffer objects so we'll need to force
|
||||||
|
// Geometry to assign these, we'll do this by switching off VBO's then renabling them.
|
||||||
|
setUseVertexBufferObjects(false);
|
||||||
|
setUseVertexBufferObjects(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Geometry::~Geometry()
|
Geometry::~Geometry()
|
||||||
|
Loading…
Reference in New Issue
Block a user