unsigned depth = static_cast<const Texture3D *>(this)->depth;
unsigned levels = static_cast<const Texture3D *>(this)->levels;
+ if(!id)
+ create();
+
GLenum gl_fmt = get_gl_pixelformat(storage_fmt);
if(ARB_texture_storage)
{
return target==GL_TEXTURE_2D_ARRAY;
}
+size_t OpenGLTexture3D::get_data_size() const
+{
+ if(!id)
+ return 0;
+
+ unsigned width = static_cast<const Texture3D *>(this)->width;
+ unsigned height = static_cast<const Texture3D *>(this)->height;
+ unsigned depth = static_cast<const Texture3D *>(this)->depth;
+ unsigned levels = static_cast<const Texture3D *>(this)->levels;
+
+ size_t level_size = width*height*depth*get_pixel_size(format);
+ size_t total_size = level_size;
+ for(unsigned i=0; i<levels; ++i, level_size>>=2)
+ total_size += level_size;
+ return total_size;
+}
+
} // namespace GL
} // namespace Msp