]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texture.h
Use correct shader variable names for PBR materials
[libs/gl.git] / source / texture.h
index f491297d692816de8d2503ba8e6071f77a852ca6..3fa29f60603ca66272d306b9cbe35c49e1d0ea27 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_GL_TEXTURE_H_
 #define MSP_GL_TEXTURE_H_
 
+#include <msp/core/attributes.h>
 #include <msp/datafile/objectloader.h>
 #include <msp/graphics/image.h>
 #include "datatype.h"
@@ -88,6 +89,7 @@ protected:
                void mag_filter(TextureFilter);
                void max_anisotropy(float);
                void min_filter(TextureFilter);
+               void mipmap_levels(unsigned);
                void wrap(TextureWrap);
                void wrap_r(TextureWrap);
                void wrap_s(TextureWrap);
@@ -101,11 +103,11 @@ protected:
                WRAP_S = 4,
                WRAP_T = 8,
                WRAP_R = 16,
-               GENERATE_MIPMAP = 32,
                COMPARE = 64,
                COMPARE_FUNC = 128,
                MAX_ANISOTROPY = 256,
-               FORMAT_SWIZZLE = 512
+               FORMAT_SWIZZLE = 512,
+               MIPMAP_LEVELS = 1024
        };
 
        enum FormatSwizzle
@@ -121,11 +123,12 @@ protected:
        FormatSwizzle swizzle;
        TextureFilter min_filter;
        TextureFilter mag_filter;
+       unsigned mipmap_levels;
        float max_anisotropy;
        TextureWrap wrap_s;
        TextureWrap wrap_t;
        TextureWrap wrap_r;
-       bool gen_mipmap;
+       bool auto_gen_mipmap;
        bool compare;
        Predicate cmp_func;
        mutable int dirty_params;
@@ -154,6 +157,8 @@ public:
        is not applicable to magnification, LINEAR is used instead. */
        void set_filter(TextureFilter);
 
+       void set_mipmap_levels(unsigned);
+
        void set_max_anisotropy(float);
 
        /** Sets the wrapping mode for all coordinates. */
@@ -165,14 +170,15 @@ public:
 
        static bool can_generate_mipmap();
 
+       void generate_mipmap();
+
        /** Sets automatic mipmap generation.  If enabled, mipmaps are generated
        when a texture image is uploaded. */
-       void set_generate_mipmap(bool);
+       void set_auto_generate_mipmap(bool);
 
-protected:
-       void auto_generate_mipmap();
+       /// Deprecated.  Use set_auto_generate_mipmap instead.
+       DEPRECATED void set_generate_mipmap(bool g) { set_auto_generate_mipmap(g); }
 
-public:
        /** Sets depth texture comparison.  Has no effect on other formats.  When
        comparison is enabled, the third component of the texture coordinate is
        compared against the texel value, and the result is returned as the texture
@@ -196,8 +202,8 @@ public:
        GLenum get_target() const { return target; }
        unsigned get_id() const { return id; }
 
-       void bind(bool legacy = true) const { bind_to(0, legacy); }
-       void bind_to(unsigned, bool = true) const;
+       void bind() const { bind_to(0); }
+       void bind_to(unsigned) const;
 
        static const Texture *current(unsigned = 0);
        static void unbind() { unbind_from(0); }