goat3dgfx

annotate src/texture.h @ 23:0ac499409edd

added misisng header file in goat3dgfx.h added contains() function in geom
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 25 Feb 2014 23:47:48 +0200
parents 3d96734fd477
children dc5918c62a64
rev   line source
nuclear@0 1 #ifndef TEXTURE_H_
nuclear@0 2 #define TEXTURE_H_
nuclear@0 3
nuclear@0 4 #include "dataset.h"
nuclear@0 5 #include "opengl.h"
nuclear@0 6
nuclear@15 7 namespace goatgfx {
nuclear@15 8
nuclear@0 9 class Image;
nuclear@0 10
nuclear@0 11 class Texture {
nuclear@0 12 protected:
nuclear@0 13 unsigned int id;
nuclear@0 14 unsigned int target;
nuclear@0 15 unsigned int texfmt;
nuclear@0 16 int sz[3];
nuclear@0 17
nuclear@0 18 Texture(const Texture &tex) {}
nuclear@0 19 Texture &operator =(const Texture &tex) { return *this; }
nuclear@0 20
nuclear@0 21 public:
nuclear@0 22 Texture();
nuclear@0 23 virtual ~Texture();
nuclear@0 24
nuclear@0 25 void set_wrapping(unsigned int wrap);
nuclear@0 26 void set_filtering(unsigned int filt);
nuclear@0 27 void set_filtering(unsigned int min_filt, unsigned int mag_filt);
nuclear@0 28
nuclear@0 29 unsigned int get_format() const;
nuclear@0 30
nuclear@0 31 virtual int get_size(int dim) const;
nuclear@0 32
nuclear@0 33 virtual void create(int xsz, int ysz, unsigned int ifmt = GL_RGBA) = 0;
nuclear@0 34 virtual void set_image(const Image &img, int idx = 0) = 0;
nuclear@0 35
nuclear@0 36 virtual bool load(const char *fname) = 0;
nuclear@0 37 virtual bool save(const char *fname) const = 0;
nuclear@0 38
nuclear@0 39 virtual unsigned int get_id() const;
nuclear@0 40
nuclear@0 41 virtual void bind(int tex_unit = 0) const;
nuclear@0 42 };
nuclear@0 43
nuclear@0 44 class Texture2D : public Texture {
nuclear@0 45 public:
nuclear@0 46 Texture2D();
nuclear@0 47
nuclear@0 48 virtual void create(int xsz, int ysz, unsigned int ifmt = GL_RGBA);
nuclear@0 49 virtual void set_image(const Image &img, int idx = 0);
nuclear@0 50
nuclear@0 51 virtual bool load(const char *fname);
nuclear@0 52 virtual bool save(const char *fname) const;
nuclear@0 53 };
nuclear@0 54
nuclear@0 55 class TextureCube : public Texture {
nuclear@6 56 private:
nuclear@6 57 bool load_multi(const Image &img, const float *xoffsets, const float *yoffsets, float sz,
nuclear@6 58 unsigned int rotmask = 0);
nuclear@6 59
nuclear@0 60 public:
nuclear@0 61 TextureCube();
nuclear@0 62
nuclear@0 63 virtual void create(int xsz, int ysz, unsigned int ifmt = GL_RGBA);
nuclear@0 64 virtual void set_image(const Image &img, int idx = 0);
nuclear@0 65
nuclear@0 66 virtual bool load(const char *fname);
nuclear@0 67 virtual bool save(const char *fname) const;
nuclear@0 68 };
nuclear@0 69
nuclear@0 70 void set_texture(Texture *tex, int tunit = 0);
nuclear@0 71
nuclear@0 72 /** loads a texture autodetecting whether it's a 2D texture or
nuclear@0 73 * cubemap and creating the correct Texture subclass instance.
nuclear@0 74 */
nuclear@0 75 Texture *load_texture(const char *fname);
nuclear@0 76
nuclear@0 77 class TextureSet : public DataSet<Texture*> {
nuclear@0 78 public:
nuclear@0 79 TextureSet();
nuclear@0 80 };
nuclear@0 81
nuclear@15 82 } // namespace goatgfx
nuclear@15 83
nuclear@0 84 #endif // TEXTURE_H_