X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftexture.cpp;h=aec1bc92da90b9b84f8882991f9b6bf4a24d84c2;hb=6c525eff3eaaa617648a869449ed3bddf9c1936d;hp=d738bb36e9a63c2df69ef97a205e292b59aa5b49;hpb=e37851b98dde5082ee92570354746f2f92e21940;p=libs%2Fgl.git diff --git a/source/texture.cpp b/source/texture.cpp index d738bb36..aec1bc92 100644 --- a/source/texture.cpp +++ b/source/texture.cpp @@ -2,6 +2,7 @@ #include #include #include "error.h" +#include "resourcemanager.h" #include "resources.h" #include "texture.h" #include "texunit.h" @@ -43,7 +44,8 @@ void operator>>(const LexicalConverter &c, TextureWrap &tw) } -Texture::Texture(GLenum t): +Texture::Texture(GLenum t, ResourceManager *m): + id(0), target(t), min_filter(NEAREST_MIPMAP_LINEAR), mag_filter(LINEAR), @@ -55,12 +57,16 @@ Texture::Texture(GLenum t): cmp_func(LEQUAL), dirty_params(0) { - glGenTextures(1, &id); + if(m) + set_manager(m); + else + glGenTextures(1, &id); } Texture::~Texture() { - glDeleteTextures(1, &id); + if(id) + glDeleteTextures(1, &id); } void Texture::update_parameter(int mask) const @@ -176,6 +182,9 @@ void Texture::bind_to(unsigned i) const 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);