diff --git a/src/osg/Geometry.cpp b/src/osg/Geometry.cpp index c79a2851d..a3329e585 100644 --- a/src/osg/Geometry.cpp +++ b/src/osg/Geometry.cpp @@ -877,6 +877,12 @@ void Geometry::drawImplementation(RenderInfo& renderInfo) const State& state = *renderInfo.getState(); + bool usingVertexBufferObjects = state.useVertexBufferObject(_supportsVertexBufferObjects && _useVertexBufferObjects); + bool usingVertexArrayObjects = usingVertexBufferObjects && state.useVertexArrayObject(_useVertexArrayObject); + + osg::VertexArrayState* vas = state.getCurrentVertexArrayState(); + vas->setVertexBufferObjectSupported(usingVertexBufferObjects); + bool checkForGLErrors = state.getCheckForGLErrors()==osg::State::ONCE_PER_ATTRIBUTE; if (checkForGLErrors) state.checkGLErrors("start of Geometry::drawImplementation()"); @@ -892,13 +898,9 @@ void Geometry::drawImplementation(RenderInfo& renderInfo) const drawPrimitivesImplementation(renderInfo); - bool usingVertexBufferObjects = state.useVertexBufferObject(_supportsVertexBufferObjects && _useVertexBufferObjects); - bool usingVertexArrayObjects = usingVertexBufferObjects && state.useVertexArrayObject(_useVertexArrayObject); - if (usingVertexBufferObjects && !usingVertexArrayObjects) { // unbind the VBO's if any are used. - osg::VertexArrayState* vas = state.getCurrentVertexArrayState(); vas->unbindVertexBufferObject(); vas->unbindElementBufferObject(); }