Added handling of vertex buffer objects into osg::Geometry copy constructor.

This commit is contained in:
Robert Osfield 2010-10-28 14:01:47 +00:00
parent ea98b1a9f8
commit b622a99178
2 changed files with 15 additions and 0 deletions

View File

@ -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;

View File

@ -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()