+protected:
+ class Loader: public DataFile::ObjectLoader<Texture>
+ {
+ public:
+ Loader(Texture &);
+ void generate_mipmap(bool);
+ void mag_filter(TextureFilter);
+ void min_filter(TextureFilter);
+ void wrap(TextureWrap);
+ void wrap_r(TextureWrap);
+ void wrap_s(TextureWrap);
+ void wrap_t(TextureWrap);
+ };
+
+ enum ParameterMask
+ {
+ MIN_FILTER = 1,
+ MAG_FILTER = 2,
+ WRAP_S = 4,
+ WRAP_T = 8,
+ WRAP_R = 16,
+ GENERATE_MIPMAP = 32,
+ COMPARE = 64,
+ COMPARE_FUNC = 128
+ };
+
+ unsigned id;
+ GLenum target;
+ TextureFilter min_filter;
+ TextureFilter mag_filter;
+ TextureWrap wrap_s;
+ TextureWrap wrap_t;
+ TextureWrap wrap_r;
+ bool gen_mipmap;
+ bool compare;
+ Predicate cmp_func;
+ mutable int dirty_params;
+
+ Texture(GLenum);
+ Texture(const Texture &);
+ Texture &operator=(const Texture &);