X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fscene%2Fmodel%2FModelRegistry.cxx;h=861aee432949ac72fc3e28293ff6ca600e351ff0;hb=daa0fbdc6ba4a2c0548d71737953aa0901b5d71d;hp=2e92c836ee6364acea6c555831160f0ff1544e4e;hpb=d4c52b599dbd2b458709f05df2f7616a4025f59a;p=simgear.git diff --git a/simgear/scene/model/ModelRegistry.cxx b/simgear/scene/model/ModelRegistry.cxx index 2e92c836..861aee43 100644 --- a/simgear/scene/model/ModelRegistry.cxx +++ b/simgear/scene/model/ModelRegistry.cxx @@ -258,9 +258,13 @@ public: if (!texture) return; - // Hmm, true?? - texture->setDataVariance(osg::Object::STATIC); + // Do not touch dynamically generated textures. + if (texture->getReadPBuffer()) + return; + if (texture->getDataVariance() == osg::Object::DYNAMIC) + return; + // If no image attached, we assume this one is dynamically generated Image* image = texture->getImage(0); if (!image) return; @@ -285,6 +289,16 @@ public: if (!texture) return; + // Cannot be static if this is a render to texture thing + if (texture->getReadPBuffer()) + return; + if (texture->getDataVariance() == osg::Object::DYNAMIC) + return; + // If no image attached, we assume this one is dynamically generated + Image* image = texture->getImage(0); + if (!image) + return; + texture->setDataVariance(Object::STATIC); } @@ -292,8 +306,8 @@ public: { if (!stateSet) return; - SGTextureStateAttributeVisitor::apply(stateSet); stateSet->setDataVariance(Object::STATIC); + SGTextureStateAttributeVisitor::apply(stateSet); } };