X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftexture2d.cpp;h=2ea713eb3a539c9705e13f90b2775ff9b643fdfd;hb=b152e4f63170e8ccd6c9fb9397964c628fb6efeb;hp=2da1c25245b1064cf8da073c8e9c4d919fb9417a;hpb=c6d64dab2a0da9bcc8165ef7123bcb8e2dccfe31;p=libs%2Fgl.git diff --git a/source/texture2d.cpp b/source/texture2d.cpp index 2da1c252..2ea713eb 100644 --- a/source/texture2d.cpp +++ b/source/texture2d.cpp @@ -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); }