diff --git a/include/osg/Texture2D b/include/osg/Texture2D index d04deb41f..0e9b0da1f 100644 --- a/include/osg/Texture2D +++ b/include/osg/Texture2D @@ -93,9 +93,9 @@ class OSG_EXPORT Texture2D : public Texture return texture.textureObjectValid(state); } - virtual TextureObject* generateTextureObject(const Texture2D& texture, State& state) const + virtual osg::ref_ptr generateTextureObject(const Texture2D& texture, State& state) const { - return osg::Texture::generateTextureObject(&texture, state.getContextID(), GL_TEXTURE_2D).release(); + return osg::Texture::generateTextureObject(&texture, state.getContextID(), GL_TEXTURE_2D); } virtual void load(const Texture2D& texture,State& state) const = 0; diff --git a/src/osg/Texture2D.cpp b/src/osg/Texture2D.cpp index cea45af08..453a6bd24 100644 --- a/src/osg/Texture2D.cpp +++ b/src/osg/Texture2D.cpp @@ -220,7 +220,8 @@ void Texture2D::apply(State& state) const } else if (_subloadCallback.valid()) { - _textureObjectBuffer[contextID] = textureObject = _subloadCallback->generateTextureObject(*this, state); + _textureObjectBuffer[contextID] = _subloadCallback->generateTextureObject(*this, state); + textureObject = _textureObjectBuffer[contextID].get(); textureObject->bind();