]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture.cpp
Rework ProgramData to do less unnecessary work
[libs/gl.git] / source / texture.cpp
index a23e57c72615ed632e67c863e9ed37539842dcd2..0fa65eadaed0f7b31508c6e9e4fa55a2d6ba4cfe 100644 (file)
@@ -65,6 +65,9 @@ Texture::Texture(GLenum t, ResourceManager *m):
 
 Texture::~Texture()
 {
+       while(TexUnit *unit = TexUnit::find_unit(this))
+               unbind_from(unit->get_index());
+
        if(id)
                glDeleteTextures(1, &id);
 }
@@ -178,13 +181,13 @@ void Texture::set_compare_func(Predicate f)
 
 void Texture::bind_to(unsigned i) const
 {
-       if(!id)
-               manager->load_resource(*this);
-
        TexUnit &unit = TexUnit::get_unit(i);
        const Texture *cur = unit.get_texture();
        if(unit.set_texture(this))
        {
+               if(manager)
+                       manager->resource_used(*this);
+
                unit.bind();
                if(cur && cur->target!=target)
                        glDisable(cur->target);