if(allocated&(1<<level))
return;
+ PixelFormat base_fmt = get_base_pixelformat(ifmt);
+ DataType type = get_alloc_type(base_fmt);
for(unsigned i=0; i<6; ++i)
- image(enumerate_faces(i), level, get_base_pixelformat(ifmt), UNSIGNED_BYTE, 0);
+ image(enumerate_faces(i), level, base_fmt, type, 0);
}
void TextureCube::image(TextureCubeFace face, unsigned level, PixelFormat fmt, DataType type, const void *data)
allocated |= 1<<level;
if(gen_mipmap && level==0)
{
+ // TODO Only do this once all faces are created
+ auto_generate_mipmap();
for(; s; s>>=1, ++level) ;
allocated |= (1<<level)-1;
}
if(w!=h)
throw incompatible_data("TextureCube::image");
- PixelFormat f = storage_pixelformat_from_graphics(img.get_format());
- if(srgb)
- f = get_srgb_pixelformat(f);
- storage(f, w);
+ storage(storage_pixelformat_from_graphics(img.get_format(), srgb), w);
}
else if(w!=size || h!=size)
throw incompatible_data("TextureCube::image");