]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture.h
Always bind textures in a specific texture unit
[libs/gl.git] / source / texture.h
index 30ad484cbc29835108788add581d54ad48791fd1..c091c884cacfd592833120b785c7f83ff2fe303e 100644 (file)
@@ -70,8 +70,11 @@ protected:
        {
        public:
                Loader(Texture &);
+       private:
+               void filter(TextureFilter);
                void generate_mipmap(bool);
                void mag_filter(TextureFilter);
+               void max_anisotropy(float);
                void min_filter(TextureFilter);
                void wrap(TextureWrap);
                void wrap_r(TextureWrap);
@@ -88,13 +91,15 @@ protected:
                WRAP_R = 16,
                GENERATE_MIPMAP = 32,
                COMPARE = 64,
-               COMPARE_FUNC = 128
+               COMPARE_FUNC = 128,
+               MAX_ANISOTROPY = 256
        };
 
        unsigned id;
        GLenum target;
        TextureFilter min_filter;
        TextureFilter mag_filter;
+       float max_anisotropy;
        TextureWrap wrap_s;
        TextureWrap wrap_t;
        TextureWrap wrap_r;
@@ -115,6 +120,12 @@ public:
        void set_min_filter(TextureFilter);
        void set_mag_filter(TextureFilter);
 
+       /** Sets filter for both minification and magnification.  Since mipmapping
+       is not applicable to magnification, LINEAR is used instead. */
+       void set_filter(TextureFilter);
+
+       void set_max_anisotropy(float);
+
        /** Sets the wrapping mode for all coordinates. */
        void set_wrap(TextureWrap);
 
@@ -138,11 +149,11 @@ public:
        GLenum get_target() const { return target; }
        unsigned get_id() const { return id; }
 
-       void bind() const;
+       void bind() const { bind_to(0); }
        void bind_to(unsigned) const;
 
-       static const Texture *current();
-       static void unbind();
+       static const Texture *current(unsigned = 0);
+       static void unbind() { unbind_from(0); }
        static void unbind_from(unsigned);
 };