- sub_image(level, 0, 0, 0, w, h, d, fmt, type, data);
- else
- glTexImage3D(target, level, ifmt, width, height, depth, 0, fmt, type, data);
+ return sub_image(level, 0, 0, 0, w, h, d, data);
+
+ BindRestore _bind(this);
+
+ if(!allocated)
+ {
+ glTexParameteri(target, GL_TEXTURE_MAX_LEVEL, levels-1);
+ apply_swizzle();
+ }
+
+ PixelComponents comp = get_components(storage_fmt);
+ DataType type = get_component_type(storage_fmt);
+ glTexImage3D(target, level, storage_fmt, width, height, depth, 0, comp, type, data);