20 Texture(const Texture &tex) {}
21 Texture &operator =(const Texture &tex) {
29 virtual TextureType get_type() const = 0;
31 void set_wrapping(unsigned int wrap);
32 void set_filtering(unsigned int filt);
33 void set_filtering(unsigned int min_filt, unsigned int mag_filt);
34 void set_anisotropy(int aniso);
36 unsigned int get_format() const;
38 virtual int get_size(int dim) const;
40 virtual void create(int xsz, int ysz, unsigned int ifmt = GL_RGBA) = 0;
41 virtual void set_image(const Image &img, int idx = 0) = 0;
42 virtual void get_image(Image *img, int idx = 0) const = 0;
44 virtual bool load(const char *fname) = 0;
45 virtual bool save(const char *fname) const = 0;
47 virtual unsigned int get_id() const;
49 virtual void bind(int tex_unit = 0) const;
52 class Texture2D : public Texture {
56 virtual TextureType get_type() const;
58 virtual void create(int xsz, int ysz, unsigned int ifmt = GL_RGBA);
59 virtual void set_image(const Image &img, int idx = 0);
60 virtual void get_image(Image *img, int idx = 0) const;
62 virtual void set_subimage(const Image &img, int xoffs, int yoffs);
64 virtual bool load(const char *fname);
65 virtual bool save(const char *fname) const;
68 class TextureCube : public Texture {
72 virtual TextureType get_type() const;
74 virtual void create(int xsz, int ysz, unsigned int ifmt = GL_RGBA);
75 virtual void set_image(const Image &img, int idx = 0);
76 virtual void get_image(Image *img, int idx = 0) const;
78 virtual bool load(const char *fname);
79 virtual bool save(const char *fname) const;
82 void bind_texture(Texture *tex, int tunit = 0);
84 /** loads a texture autodetecting whether it's a 2D texture or
85 * cubemap and creating the correct Texture subclass instance.
87 Texture *load_texture(const char *fname);