]> git.tdb.fi Git - gldbg.git/blob - flavors/gl/source/texturestate.h
Replace per-file license notices with License.txt
[gldbg.git] / flavors / gl / source / texturestate.h
1 #ifndef TEXTURESTATE_H_
2 #define TEXTURESTATE_H_
3
4 #include <string>
5 #include <vector>
6 #include "opengl.h"
7 #include "autoconstptr.h"
8
9 struct TexImageState
10 {
11         unsigned width;
12         unsigned height;
13         unsigned depth;
14         GLenum internal_format;
15
16         TexImageState();
17         void set_2d(GLenum, unsigned, unsigned);
18         std::string describe() const;
19 };
20
21 struct TextureState
22 {
23         unsigned id;
24         GLenum target;
25         std::vector<TexImageState> images;
26         GLenum min_filter;
27         GLenum mag_filter;
28         GLenum wrap_s;
29         GLenum wrap_t;
30         GLenum wrap_r;
31         GLenum compare_mode;
32         GLenum compare_func;
33         bool generate_mipmap;
34
35         TextureState();
36         void set_image_2d(unsigned, GLenum, unsigned, unsigned);
37         void set_parameter(GLenum, const int *);
38         std::string describe() const;
39 };
40
41 struct TexUnitState
42 {
43         AutoConstPtr<TextureState> current_2d;
44         AutoConstPtr<TextureState> current_3d;
45
46         TexUnitState();
47
48         void set_current_texture(GLenum, TextureState *);
49         TextureState *get_current_texture(GLenum);
50         const TextureState *get_current_texture(GLenum) const;
51         std::string describe_binding(GLenum) const;
52 };
53
54 #endif