]> git.tdb.fi Git - libs/gl.git/blobdiff - source/core/texture.h
Mark constant data as const
[libs/gl.git] / source / core / texture.h
index bca0d409b105d9177ea7a108efc498e25c180769..0377c022c30137898da1257571eba01c3dbfd543 100644 (file)
@@ -1,14 +1,10 @@
 #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"
 #include "gl.h"
 #include "pixelformat.h"
-#include "predicate.h"
-#include "sampler.h"
 #include "resource.h"
 
 namespace Msp {
@@ -37,7 +33,8 @@ protected:
        private:
                void init();
 
-               unsigned get_levels() const;
+               virtual void finish();
+
        protected:
                void load_external_image(Graphics::Image &, const std::string &);
 
@@ -45,23 +42,9 @@ protected:
                void external_image(const std::string &);
                void external_image_srgb(const std::string &);
                void external_image_common(const std::string &);
-               void filter(TextureFilter);
                void generate_mipmap(bool);
                void image_data(const std::string &);
-               void mag_filter(TextureFilter);
-               void max_anisotropy(float);
-               void min_filter(TextureFilter);
                void mipmap_levels(unsigned);
-               void sampler();
-               void wrap(TextureWrap);
-               void wrap_r(TextureWrap);
-               void wrap_s(TextureWrap);
-               void wrap_t(TextureWrap);
-       };
-
-       enum ParameterMask
-       {
-               FORMAT_SWIZZLE = 512
        };
 
        enum FormatSwizzle
@@ -79,9 +62,10 @@ protected:
        FormatSwizzle swizzle;
        bool use_srgb_format;
        bool auto_gen_mipmap;
-       Sampler default_sampler;
+       std::string debug_name;
 
-       static int swizzle_orders[];
+       static const int swizzle_orders[];
+       static Texture *scratch_binding;
 
        Texture(GLenum, ResourceManager * = 0);
        Texture(const Texture &);
@@ -96,70 +80,29 @@ protected:
        void set_parameter_i(GLenum, int) const;
 
 public:
-       Sampler &get_default_sampler() { return default_sampler; }
-       const Sampler &get_default_sampler() const { return default_sampler; }
-
-       DEPRECATED void set_min_filter(TextureFilter);
-       DEPRECATED void set_mag_filter(TextureFilter);
-
-       /** Sets filter for both minification and magnification.  Since mipmapping
-       is not applicable to magnification, LINEAR is used instead. */
-       DEPRECATED void set_filter(TextureFilter);
-
-       DEPRECATED void set_mipmap_levels(unsigned) { }
-
-       DEPRECATED void set_max_anisotropy(float);
-
-       /** Sets the wrapping mode for all coordinates. */
-       DEPRECATED void set_wrap(TextureWrap);
-
-       DEPRECATED void set_wrap_s(TextureWrap);
-       DEPRECATED void set_wrap_t(TextureWrap);
-       DEPRECATED void set_wrap_r(TextureWrap);
-
-       static bool can_generate_mipmap();
+       PixelFormat get_format() const { return format; }
 
        void generate_mipmap();
 
-       /** Sets automatic mipmap generation.  If enabled, mipmaps are generated
-       when a texture image is uploaded. */
-       void set_auto_generate_mipmap(bool);
-
-       /// Deprecated.  Use set_auto_generate_mipmap instead.
-       DEPRECATED void set_generate_mipmap(bool g) { set_auto_generate_mipmap(g); }
-
-       /** 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
-       sample. */
-       DEPRECATED void set_compare_enabled(bool);
-
-       /** Sets the function to use for depth comparison. */
-       DEPRECATED void set_compare_func(Predicate);
-
        /// Loads a Graphics::Image from a file and uploads it to the texture.
        virtual void load_image(const std::string &, unsigned = 0);
 
-       DEPRECATED void load_image(const std::string &, bool srgb);
-
        /** Uploads an image to the texture.  If storage has not been defined, it
        will be set to match the image.  Otherwise the image must be compatible
        with the defined storage.  Semantics depend on the type of texture.  */
        virtual void image(const Graphics::Image &, unsigned = 0) = 0;
 
-       DEPRECATED void image(const Graphics::Image &, bool srgb);
-
        GLenum get_target() const { return target; }
        unsigned get_id() const { return id; }
 
-       void bind() const { bind_to(0); }
-       void bind_to(unsigned) const;
+       virtual std::uint64_t get_data_size() const { return 0; }
 
-       static const Texture *current(unsigned = 0);
-       static void unbind() { unbind_from(0); }
-       static void unbind_from(unsigned);
+       void set_debug_name(const std::string &);
 
-       virtual UInt64 get_data_size() const { return 0; }
+protected:
+       void bind_scratch();
+public:
+       static void unbind_scratch();
 };
 
 } // namespace GL