#include <msp/gl/extensions/sgis_generate_mipmap.h>
#include <msp/strings/format.h>
#include "error.h"
+#include "resourcemanager.h"
#include "resources.h"
#include "texture.h"
#include "texunit.h"
}
-Texture::Texture(GLenum t):
+Texture::Texture(GLenum t, ResourceManager *m):
+ id(0),
target(t),
min_filter(NEAREST_MIPMAP_LINEAR),
mag_filter(LINEAR),
cmp_func(LEQUAL),
dirty_params(0)
{
- glGenTextures(1, &id);
+ if(m)
+ set_manager(m);
+ else
+ glGenTextures(1, &id);
}
Texture::~Texture()
{
- glDeleteTextures(1, &id);
+ while(TexUnit *unit = TexUnit::find_unit(this))
+ unbind_from(unit->get_index());
+
+ if(id)
+ glDeleteTextures(1, &id);
}
void Texture::update_parameter(int mask) 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);