-/* $Id$
-
-This file is part of gldbg
-Copyright © 2009 Mikko Rasa, Mikkosoft Productions
-Distributed under the GPL
-*/
-
#ifndef TEXTURESTATE_H_
#define TEXTURESTATE_H_
GLenum internal_format;
TexImageState();
+
+ void set_1d(GLenum, unsigned);
void set_2d(GLenum, unsigned, unsigned);
+ void set_3d(GLenum, unsigned, unsigned, unsigned);
std::string describe() const;
};
+extern GLenum texture_cube_faces[6];
+
struct TextureState
{
unsigned id;
bool generate_mipmap;
TextureState();
+
+ TexImageState &get_image(unsigned);
+ void set_image_1d(unsigned, GLenum, unsigned);
void set_image_2d(unsigned, GLenum, unsigned, unsigned);
+ void set_face_image_2d(GLenum, unsigned, GLenum, unsigned, unsigned);
+ void set_image_3d(unsigned, GLenum, unsigned, unsigned, unsigned);
+ void create_mipmaps(unsigned = 0);
void set_parameter(GLenum, const int *);
std::string describe() const;
};
struct TexUnitState
{
- AutoConstPtr<TextureState> current_2d;
- AutoConstPtr<TextureState> current_3d;
+ struct Binding
+ {
+ bool enabled;
+ AutoConstPtr<TextureState> current;
+
+ Binding();
+ std::string describe() const;
+ };
- TexUnitState();
+ Binding binding_1d;
+ Binding binding_2d;
+ Binding binding_3d;
+ Binding binding_cube;
+ Binding *get_binding(GLenum);
+ const Binding *get_binding(GLenum) const;
void set_current_texture(GLenum, TextureState *);
TextureState *get_current_texture(GLenum);
const TextureState *get_current_texture(GLenum) const;
+ bool is_enabled(GLenum) const;
std::string describe_binding(GLenum) const;
};