]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture2d.cpp
Copy ProgramData::uniform_slots in copy constructor and operator=
[libs/gl.git] / source / texture2d.cpp
index 2da1c25245b1064cf8da073c8e9c4d919fb9417a..2ea713eb3a539c9705e13f90b2775ff9b643fdfd 100644 (file)
@@ -32,6 +32,7 @@ public:
 
 Texture2D::Texture2D(ResourceManager *m):
        Texture(GL_TEXTURE_2D, m),
+       ifmt(RGB),
        width(0),
        height(0),
        allocated(0)
@@ -139,6 +140,11 @@ Resource::AsyncLoader *Texture2D::load(IO::Seekable &io)
        return new AsyncLoader(*this, io);
 }
 
+UInt64 Texture2D::get_data_size() const
+{
+       return id ? width*height*get_component_count(ifmt) : 0;
+}
+
 void Texture2D::unload()
 {
        glDeleteTextures(1, &id);
@@ -201,10 +207,7 @@ Texture2D::AsyncLoader::AsyncLoader(Texture2D &t, IO::Seekable &i):
        pixel_buffer(PIXEL_UNPACK_BUFFER),
        mapped_address(0),
        phase(0)
-{
-       if(!texture.id)
-               glGenTextures(1, &texture.id);
-}
+{ }
 
 bool Texture2D::AsyncLoader::needs_sync() const
 {
@@ -239,6 +242,8 @@ bool Texture2D::AsyncLoader::process()
                        return false;
                }
 
+               if(!texture.id)
+                       glGenTextures(1, &texture.id);
                texture.image(image, false, true);
        }