X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Ftexture.h;h=04a810856a5dedab8b16ecbbd453f6817fddd1d7;hb=4e9fe48180c7b4646ac2591e172de61f7a693b32;hp=c4e72031ebb174e372877dfd14972449e80d9178;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266;p=libs%2Fgl.git diff --git a/source/core/texture.h b/source/core/texture.h index c4e72031..04a81085 100644 --- a/source/core/texture.h +++ b/source/core/texture.h @@ -37,7 +37,8 @@ protected: private: void init(); - unsigned get_levels() const; + virtual void finish(); + protected: void load_external_image(Graphics::Image &, const std::string &); @@ -45,23 +46,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 +66,10 @@ protected: FormatSwizzle swizzle; bool use_srgb_format; bool auto_gen_mipmap; - Sampler default_sampler; + std::string debug_name; static int swizzle_orders[]; + static Texture *scratch_binding; Texture(GLenum, ResourceManager * = 0); Texture(const Texture &); @@ -90,52 +78,16 @@ public: ~Texture(); protected: + void generate_id(); void set_format(PixelFormat); void apply_swizzle(); 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); @@ -151,14 +103,14 @@ public: GLenum get_target() const { return target; } unsigned get_id() const { return id; } - void bind() const { bind_to(0); } - void bind_to(unsigned) const; + virtual UInt64 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