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:
@@ -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;
|
||||
|
||||
};
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user