3 This file is part of libmspgl
4 Copyright © 2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
8 #ifndef MSP_GL_TEXTURE_H_
9 #define MSP_GL_TEXTURE_H_
12 #include <msp/datafile/objectloader.h>
14 #include "predicate.h"
23 NEAREST_MIPMAP_NEAREST = GL_NEAREST_MIPMAP_NEAREST,
24 NEAREST_MIPMAP_LINEAR = GL_NEAREST_MIPMAP_LINEAR,
25 LINEAR_MIPMAP_NEAREST = GL_LINEAR_MIPMAP_NEAREST,
26 LINEAR_MIPMAP_LINEAR = GL_LINEAR_MIPMAP_LINEAR
29 std::istream &operator>>(std::istream &, TextureFilter &);
35 CLAMP_TO_EDGE = GL_CLAMP_TO_EDGE,
36 MIRRORED_REPEAT = GL_MIRRORED_REPEAT
41 Base class for textures. This class only defines operations common for all
42 texture types and is not instantiable. For specifying images for textures, see
43 one of the dimensioned texture classes.
48 class Loader: public DataFile::ObjectLoader<Texture>
52 void generate_mipmap(bool);
53 void mag_filter(TextureFilter);
54 void min_filter(TextureFilter);
55 void wrap(TextureWrap);
56 void wrap_r(TextureWrap);
57 void wrap_s(TextureWrap);
58 void wrap_t(TextureWrap);
75 TextureFilter min_filter;
76 TextureFilter mag_filter;
83 mutable int dirty_params;
86 Texture(const Texture &);
87 Texture &operator=(const Texture &);
92 void update_parameter(int) const;
94 void set_min_filter(TextureFilter);
95 void set_mag_filter(TextureFilter);
96 void set_wrap(TextureWrap);
97 void set_wrap_s(TextureWrap);
98 void set_wrap_t(TextureWrap);
99 void set_wrap_r(TextureWrap);
100 void set_generate_mipmap(bool);
101 void set_compare_enabled(bool);
102 void set_compare_func(Predicate);
103 GLenum get_target() const { return target; }
104 unsigned get_id() const { return id; }
107 void bind_to(unsigned) const;
109 static const Texture *current();
110 static void unbind();
111 static void unbind_from(unsigned);