From 9d72bf4712d023b0bfdbf5cdf2bdd994483fe9d6 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Mon, 16 Apr 2018 15:05:11 +0100 Subject: [PATCH] Fixed Geometry::drawImplmentation() handling of VBO's to prevent them from being used when display lists are used. --- src/osg/Geometry.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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(); }