From b0132be53fcdb93da7f0b1e37b20e9931dd5801a Mon Sep 17 00:00:00 2001 From: Bo Svensson <90132211+bosvensson1@users.noreply.github.com> Date: Tue, 12 Oct 2021 11:47:42 +0000 Subject: [PATCH] do not dirty unchanged arrays (#3164) This PR proposes a simple change to `RigGeometry` `dirtyGLObjects` logic. 1. We will avoid dirtying unmodified arrays. 2. We can drop an osg version guard since `Drawable::dirtyGLObjects` is not nearly as harmful as `Geometry::dirtyGLObjects`. 3. We will avoid crashes in an as yet unfinished future PR concerning `Array` sharing improvements. --- components/sceneutil/morphgeometry.cpp | 6 +----- components/sceneutil/riggeometry.cpp | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/components/sceneutil/morphgeometry.cpp b/components/sceneutil/morphgeometry.cpp index 04fd6fb365..355403b066 100644 --- a/components/sceneutil/morphgeometry.cpp +++ b/components/sceneutil/morphgeometry.cpp @@ -2,8 +2,6 @@ #include -#include - namespace SceneUtil { @@ -178,9 +176,7 @@ void MorphGeometry::cull(osg::NodeVisitor *nv) positionDst->dirty(); -#if OSG_MIN_VERSION_REQUIRED(3, 5, 6) - geom.dirtyGLObjects(); -#endif + geom.osg::Drawable::dirtyGLObjects(); nv->pushOntoNodePath(&geom); nv->apply(geom); diff --git a/components/sceneutil/riggeometry.cpp b/components/sceneutil/riggeometry.cpp index 2c1efb9f36..2ca90d2c78 100644 --- a/components/sceneutil/riggeometry.cpp +++ b/components/sceneutil/riggeometry.cpp @@ -1,7 +1,5 @@ #include "riggeometry.hpp" -#include - #include #include @@ -249,9 +247,7 @@ void RigGeometry::cull(osg::NodeVisitor* nv) if (tangentDst) tangentDst->dirty(); -#if OSG_MIN_VERSION_REQUIRED(3, 5, 6) - geom.dirtyGLObjects(); -#endif + geom.osg::Drawable::dirtyGLObjects(); nv->pushOntoNodePath(&geom); nv->apply(geom);