From Alan Purvis, with enum name tweaks from Robert Osfield. Addition of

support for turing on/off the usage of vertex buffer objects.
This commit is contained in:
Robert Osfield
2004-10-19 09:29:13 +00:00
parent 2047ac250f
commit 48a1fff041
2 changed files with 21 additions and 9 deletions

View File

@@ -33,12 +33,14 @@ class OSGUTIL_EXPORT GLObjectsVisitor : public osg::NodeVisitor
/** Operation modes of the.*/
enum ModeValues
{
SWITCH_ON_DISPLAY_LISTS = 0x1,
SWITCH_OFF_DISPLAY_LISTS = 0x2,
COMPILE_DISPLAY_LISTS = 0x4,
COMPILE_STATE_ATTRIBUTES = 0x8,
RELEASE_DISPLAY_LISTS = 0x10,
RELEASE_STATE_ATTRIBUTES = 0x20
SWITCH_ON_DISPLAY_LISTS = 0x1,
SWITCH_OFF_DISPLAY_LISTS = 0x2,
COMPILE_DISPLAY_LISTS = 0x4,
COMPILE_STATE_ATTRIBUTES = 0x8,
RELEASE_DISPLAY_LISTS = 0x10,
RELEASE_STATE_ATTRIBUTES = 0x20,
SWITCH_ON_VERTEX_BUFFER_OBJECTS = 0x40,
SWITCH_OFF_VERTEX_BUFFER_OBJECTS = 0x80
};
typedef unsigned int Mode;
@@ -83,7 +85,7 @@ class OSGUTIL_EXPORT GLObjectsVisitor : public osg::NodeVisitor
protected:
Mode _mode;
osg::ref_ptr<osg::State> _state;
};

View File

@@ -20,9 +20,9 @@ using namespace osgUtil;
GLObjectsVisitor::GLObjectsVisitor(Mode mode)
{
setTraversalMode(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN);
_mode = mode;
_state = NULL;
}
@@ -79,6 +79,16 @@ void GLObjectsVisitor::apply(osg::Drawable& drawable)
{
drawable.releaseGLObjects(_state.get());
}
if (_mode&SWITCH_ON_VERTEX_BUFFER_OBJECTS)
{
drawable.setUseVertexBufferObjects(true);
}
if (_mode&SWITCH_OFF_VERTEX_BUFFER_OBJECTS)
{
drawable.setUseVertexBufferObjects(false);
}
}
void GLObjectsVisitor::apply(osg::StateSet& stateset)