goat3dgfx

annotate src/texture.h @ 24:dc5918c62a64

broken: converting to resman
author John Tsiombikas <nuclear@member.fsf.org>
date Sat, 01 Mar 2014 22:04:29 +0200
parents 7d6b667821cf
children 253542d715f4
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@24 11 enum TextureType { TEX_2D, TEX_CUBE };
nuclear@24 12
nuclear@0 13 class Texture {
nuclear@24 14 private:
nuclear@0 15 unsigned int id;
nuclear@0 16 unsigned int target;
nuclear@0 17 unsigned int texfmt;
nuclear@0 18 int sz[3];
nuclear@24 19 Image *img;
nuclear@0 20
nuclear@0 21 Texture(const Texture &tex) {}
nuclear@0 22 Texture &operator =(const Texture &tex) { return *this; }
nuclear@0 23
nuclear@24 24 void set_image_2d(const Image &img);
nuclear@24 25 bool set_image_cube(const Image &img, int idx);
nuclear@24 26 bool set_image_cube(const Image &img);
nuclear@24 27
nuclear@24 28 bool load_cube(const char *fname);
nuclear@24 29
nuclear@24 30 /* for loading multiple cubemap faces from a single image */
nuclear@24 31 bool set_cube_multi(const Image &img, const float *xoffsets, const float *yoffsets, float sz,
nuclear@24 32 unsigned int rotmask = 0);
nuclear@24 33
nuclear@0 34 public:
nuclear@0 35 Texture();
nuclear@24 36 ~Texture();
nuclear@0 37
nuclear@0 38 void set_wrapping(unsigned int wrap);
nuclear@0 39 void set_filtering(unsigned int filt);
nuclear@0 40 void set_filtering(unsigned int min_filt, unsigned int mag_filt);
nuclear@0 41
nuclear@0 42 unsigned int get_format() const;
nuclear@0 43
nuclear@24 44 int get_size(int dim) const;
nuclear@0 45
nuclear@24 46 void create(int xsz, int ysz, TextureType type = TEX_2D, unsigned int ifmt = GL_RGBA);
nuclear@24 47 void set_image(const Image &img, int idx = -1);
nuclear@0 48
nuclear@24 49 bool load(const char *fname);
nuclear@0 50
nuclear@24 51 unsigned int get_id() const;
nuclear@24 52 TextureType get_type() const;
nuclear@0 53
nuclear@24 54 void bind(int tex_unit = 0) const;
nuclear@24 55
nuclear@24 56 friend class TextureSet;
nuclear@0 57 };
nuclear@0 58
nuclear@24 59 void bind_texture(Texture *tex, int tunit = 0);
nuclear@0 60
nuclear@0 61 class TextureSet : public DataSet<Texture*> {
nuclear@24 62 private:
nuclear@24 63 static Texture *create_tex();
nuclear@24 64 static bool load_tex(Texture *tex, const char *fname);
nuclear@24 65 static bool done_tex(Texture *tex);
nuclear@24 66 static void free_tex(Texture *tex);
nuclear@24 67
nuclear@0 68 public:
nuclear@0 69 TextureSet();
nuclear@0 70 };
nuclear@0 71
nuclear@15 72 } // namespace goatgfx
nuclear@15 73
nuclear@0 74 #endif // TEXTURE_H_