X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture2d.h;h=2a49eca572ee06e25a7a770488b0639d6fd07fc9;hp=221fbd7b76a28aee38d95382a2b797e34fd5d24c;hb=77ad5a1a89aa43d9a3c8c58abff1ae184510cec6;hpb=ccbfdfa0d9d796244b1ecc0fa3faa2c50304811b diff --git a/source/texture2d.h b/source/texture2d.h index 221fbd7b..2a49eca5 100644 --- a/source/texture2d.h +++ b/source/texture2d.h @@ -31,18 +31,21 @@ public: private: class AsyncLoader; - PixelFormat ifmt; unsigned width; unsigned height; + unsigned levels; unsigned allocated; public: Texture2D(ResourceManager * = 0); virtual ~Texture2D(); - /** Defines storage structure for the texture. Must be called before an - image can be uploaded. Once storage is defined, it can't be changed. */ - void storage(PixelFormat fmt, unsigned wd, unsigned ht); + /** Defines storage structure for the texture. If lv is zero, the number + of mipmap levels is automatically determined from storage dimensions. + + Must be called before an image can be uploaded. Once storage is defined, + it can't be changed. */ + void storage(PixelFormat fmt, unsigned wd, unsigned ht, unsigned lv = 0); /** Allocates storage for the texture. The contents are initially undefined. If storage has already been allocated, does nothing. */ @@ -75,7 +78,8 @@ public: unsigned get_height() const { return height; } private: - void get_level_size(unsigned, unsigned &, unsigned &); + unsigned get_n_levels() const; + void get_level_size(unsigned, unsigned &, unsigned &) const; public: virtual Resource::AsyncLoader *load(IO::Seekable &, const Resources * = 0);