X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexture2d.h;h=2a49eca572ee06e25a7a770488b0639d6fd07fc9;hp=674c778f9782116dce94ef4c663e1dda89931953;hb=a4549c55a6d47129bd9e42c6a49a671b759ce6d9;hpb=d2efbd8a32efa2a3ee8542efc846277af19d63e0 diff --git a/source/texture2d.h b/source/texture2d.h index 674c778f..2a49eca5 100644 --- a/source/texture2d.h +++ b/source/texture2d.h @@ -3,7 +3,6 @@ #include #include -#include "resource.h" #include "texture.h" namespace Msp { @@ -27,24 +26,26 @@ public: void raw_data(const std::string &); void storage(PixelFormat, unsigned, unsigned); - void storage_b(PixelFormat, unsigned, unsigned, unsigned); }; 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. */ @@ -77,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);