diff --git a/include/osg/Texture2D b/include/osg/Texture2D index ba515a2cf..ee954d0da 100644 --- a/include/osg/Texture2D +++ b/include/osg/Texture2D @@ -87,6 +87,11 @@ class OSG_EXPORT Texture2D : public Texture class OSG_EXPORT SubloadCallback : public Referenced { public: + virtual TextureObject* generateTextureObject(const Texture2D& texture, State& state) const + { + return osg::Texture::generateTextureObject(&texture, state.getContextID(), GL_TEXTURE_2D); + } + virtual void load(const Texture2D& texture,State& state) const = 0; virtual void subload(const Texture2D& texture,State& state) const = 0; }; diff --git a/src/osg/Texture2D.cpp b/src/osg/Texture2D.cpp index 33ba9088b..76d14f0f6 100644 --- a/src/osg/Texture2D.cpp +++ b/src/osg/Texture2D.cpp @@ -191,8 +191,7 @@ void Texture2D::apply(State& state) const } else if (_subloadCallback.valid()) { - - _textureObjectBuffer[contextID] = textureObject = generateTextureObject(this, contextID,GL_TEXTURE_2D); + _textureObjectBuffer[contextID] = textureObject = _subloadCallback->generateTextureObject(*this, state); textureObject->bind();