TextureCube::TextureCube():
Texture(GL_TEXTURE_CUBE_MAP),
+ ifmt(RGB),
size(0),
allocated(0)
{
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;
}
return fv+s*sv+t*tv;
}
+UInt64 TextureCube::get_data_size() const
+{
+ return id ? size*size*6*get_pixel_size(ifmt) : 0;
+}
+
TextureCube::Loader::Loader(TextureCube &t):
DataFile::DerivedObjectLoader<TextureCube, Texture::Loader>(t)