]> git.tdb.fi Git - gldbg.git/blobdiff - flavors/gl/source/texturestate.h
More complete support for textures
[gldbg.git] / flavors / gl / source / texturestate.h
index 37cbfdda1ebd2464462e38fd983617f526d76b6f..c340f4b0392f64ceb8f3e80cf882b6d43d33b14d 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of gldbg
-Copyright © 2009  Mikko Rasa, Mikkosoft Productions
-Distributed under the GPL
-*/
-
 #ifndef TEXTURESTATE_H_
 #define TEXTURESTATE_H_
 
@@ -21,10 +14,15 @@ struct TexImageState
        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;
@@ -40,21 +38,39 @@ struct TextureState
        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;
 };