void load_external_image(Graphics::Image &, const std::string &);
private:
+ void external_data(const std::string &);
void external_image(bool, const std::string &);
void generate_mipmap(bool);
void image_data(const std::string &);
void mipmap_levels(unsigned);
+ void raw_data(const std::string &);
};
public:
};
protected:
- enum FormatSwizzle
- {
- NO_SWIZZLE,
- R_TO_LUMINANCE,
- RG_TO_LUMINANCE_ALPHA,
- RGB_TO_BGR
- };
-
- PixelFormat format;
- PixelFormat storage_fmt;
- FormatSwizzle swizzle;
- bool use_srgb_format;
- bool auto_gen_mipmap;
+ PixelFormat format = NO_PIXELFORMAT;
+ PixelFormat storage_fmt = NO_PIXELFORMAT;
+ ComponentSwizzle swizzle = NO_SWIZZLE;
+ unsigned n_levels = 0;
+ bool use_srgb_format = false;
+ bool auto_gen_mipmap = false;
Texture(unsigned);
void set_format(PixelFormat);
+ static unsigned count_levels(unsigned);
public:
PixelFormat get_format() const { return format; }
using TextureBackend::generate_mipmap;
+ /** Replaces contents of an entire mipmap level. Allocated storage must
+ exist. The image data is interpreted according to the storage format and
+ must have size matching the selected mipmap level. */
+ virtual void image(unsigned level, const void *) = 0;
+
/** Loads an image into the texture from a file. */
virtual void load_image(const std::string &, unsigned = 0);