X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture2d.h;h=2a49eca572ee06e25a7a770488b0639d6fd07fc9;hp=92dafc7142e31b980493cc20013725f73d29f3c3;hb=abb4e50bdbb6d62d7e6ee249d52353ccf22762a4;hpb=3a9ee749fbde41695d1b1a0804bbf63d76427b27 diff --git a/source/texture2d.h b/source/texture2d.h index 92dafc71..2a49eca5 100644 --- a/source/texture2d.h +++ b/source/texture2d.h @@ -3,7 +3,6 @@ #include #include -#include "resource.h" #include "texture.h" namespace Msp { @@ -32,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. */ @@ -76,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);