#include <string>
#include <msp/graphics/image.h>
-#include "resource.h"
#include "texture.h"
namespace Msp {
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. */
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);