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);
35 unsigned int get_format() const;
37 virtual int get_size(int dim) const;
39 virtual void create(int xsz, int ysz, unsigned int ifmt = GL_RGBA) = 0;
40 virtual void set_image(const Image &img, int idx = 0) = 0;
41 virtual void get_image(Image *img, int idx = 0) const = 0;
43 virtual bool load(const char *fname) = 0;
44 virtual bool save(const char *fname) const = 0;
46 virtual unsigned int get_id() const;
48 virtual void bind(int tex_unit = 0) const;
51 class Texture2D : public Texture {
55 virtual TextureType get_type() const;
57 virtual void create(int xsz, int ysz, unsigned int ifmt = GL_RGBA);
58 virtual void set_image(const Image &img, int idx = 0);
59 virtual void get_image(Image *img, int idx = 0) const;
61 virtual void set_subimage(const Image &img, int xoffs, int yoffs);
63 virtual bool load(const char *fname);
64 virtual bool save(const char *fname) const;
67 class TextureCube : public Texture {
71 virtual TextureType get_type() const;
73 virtual void create(int xsz, int ysz, unsigned int ifmt = GL_RGBA);
74 virtual void set_image(const Image &img, int idx = 0);
75 virtual void get_image(Image *img, int idx = 0) const;
77 virtual bool load(const char *fname);
78 virtual bool save(const char *fname) const;
81 void bind_texture(Texture *tex, int tunit = 0);
83 /** loads a texture autodetecting whether it's a 2D texture or
84 * cubemap and creating the correct Texture subclass instance.
86 Texture *load_texture(const char *fname);