]> git.tdb.fi Git - libs/gl.git/blobdiff - source/backends/opengl/texture3d_backend.cpp
Move the Resource function override of Texture classes into backend
[libs/gl.git] / source / backends / opengl / texture3d_backend.cpp
index 6826993ae6d9c37c414d5e6ff5aa50f1c9b7ff09..0796472a041de543d67239591928d393fbc97678 100644 (file)
@@ -26,6 +26,9 @@ void OpenGLTexture3D::allocate()
        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)
        {
@@ -71,5 +74,13 @@ bool OpenGLTexture3D::is_array() const
        return target==GL_TEXTURE_2D_ARRAY;
 }
 
+size_t OpenGLTexture3D::get_data_size() const
+{
+       unsigned width = static_cast<const Texture3D *>(this)->width;
+       unsigned height = static_cast<const Texture3D *>(this)->height;
+       unsigned depth = static_cast<const Texture3D *>(this)->depth;
+       return id ? width*height*depth*get_pixel_size(storage_fmt) : 0;
+}
+
 } // namespace GL
 } // namespace Msp