#include <math.h>
#include <assert.h>
#include "texture.h"
+#include "datamap.h"
#include "image.h"
#include "opengl.h"
#include "imago2.h"
+#include "logger.h"
static int glifmt_from_ifmt(unsigned int ifmt);
static int glfmt_from_ifmt(unsigned int ifmt);
void Texture::create(int xsz, int ysz, TextureType textype, unsigned int ifmt)
{
if(textype == TEX_CUBE && xsz != ysz) {
- fprintf(stderr, "trying to create cubemap with different width and height (%dx%d)\n", xsz, ysz);
+ error_log("trying to create cubemap with different width and height (%dx%d)\n", xsz, ysz);
return;
}
pixels += 4;
}
}
- default_img->save("/tmp/foo.png");
}
switch(type) {
{
Image img;
if(!img.load(fname)) {
- fprintf(stderr, "failed to load 2D texture: %s\n", fname);
+ error_log("failed to load 2D texture: %s\n", fname);
return false;
}
set_image(img);
- printf("loaded 2D texture: %s\n", fname);
+ info_log("loaded 2D texture: %s\n", fname);
return true;
}
{
}
-Texture *TextureSet::get_texture(const char *name, TextureType type) const
+Texture *TextureSet::get_texture(const char *name, TextureType type, const DataMap *dmap) const
{
- std::map<std::string, Texture*>::const_iterator iter = data.find(name);
+ char *fname;
+ int nsize = dmap ? dmap->path_size(name) : 0;
+ if(nsize) {
+ fname = (char*)alloca(nsize);
+ dmap->lookup(name, fname, nsize);
+ } else {
+ fname = (char*)name;
+ }
+
+ std::map<std::string, Texture*>::const_iterator iter = data.find(fname);
if(iter != data.end()) {
return iter->second;
}
Texture *res = create();
- data[name] = res;
+ data[fname] = res;
res->create_default(type);
- resman_lookup(rman, name, res);
+ resman_lookup(rman, fname, res);
return res;
}