From 5b78e334a90b3ef5cf4ea4a617f8d61646b66f2d Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 9 Mar 2017 18:17:53 +0000 Subject: [PATCH] Improved the management of the unbinding of VBO's and EBO's --- src/osg/Geometry.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/osg/Geometry.cpp b/src/osg/Geometry.cpp index 62ded6107..3813b0d20 100644 --- a/src/osg/Geometry.cpp +++ b/src/osg/Geometry.cpp @@ -858,12 +858,15 @@ void Geometry::drawImplementation(RenderInfo& renderInfo) const drawPrimitivesImplementation(renderInfo); - if (renderInfo.getState()->useVertexBufferObject(_supportsVertexBufferObjects && _useVertexBufferObjects) && - (!state.useVertexArrayObject(_useVertexArrayObject) || state.getCurrentVertexArrayState()->getRequiresSetArrays())) + bool usingVertexBufferObjects = state.useVertexBufferObject(_supportsVertexBufferObjects && _useVertexBufferObjects); + bool usingVertexArrayObjects = usingVertexBufferObjects && state.useVertexArrayObject(_useVertexArrayObject); + + if (usingVertexBufferObjects && !usingVertexArrayObjects) { // unbind the VBO's if any are used. - state.unbindVertexBufferObject(); - state.unbindElementBufferObject(); + osg::VertexArrayState* vas = state.getCurrentVertexArrayState(); + vas->unbindVertexBufferObject(); + vas->unbindElementBufferObject(); } if (checkForGLErrors) state.checkGLErrors("end of Geometry::drawImplementation().");