]> 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 9bc739bbed6abee16b613770002093a4d5ab3c6f..c340f4b0392f64ceb8f3e80cf882b6d43d33b14d 100644 (file)
@@ -14,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;
@@ -33,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;
 };