X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftexture.h;h=c4e72031ebb174e372877dfd14972449e80d9178;hb=34811e25cb7ec22d5b156cd00485aa82687f000a;hp=ad41e573ed5d53b409f82794ae44afec96a1a23e;hpb=78840e775c62c1b6e3f550bf8be1f0b828df91aa;p=libs%2Fgl.git diff --git a/source/texture.h b/source/texture.h index ad41e573..c4e72031 100644 --- a/source/texture.h +++ b/source/texture.h @@ -30,7 +30,6 @@ protected: { protected: unsigned levels; - bool srgb; public: Loader(Texture &); @@ -39,8 +38,13 @@ protected: void init(); unsigned get_levels() const; + protected: + void load_external_image(Graphics::Image &, const std::string &); + private: 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 &); @@ -64,15 +68,17 @@ protected: { NO_SWIZZLE, R_TO_LUMINANCE, - RG_TO_LUMINANCE_ALPHA + RG_TO_LUMINANCE_ALPHA, + RGB_TO_BGR }; unsigned id; GLenum target; - PixelFormat ifmt; + PixelFormat format; + PixelFormat storage_fmt; FormatSwizzle swizzle; + bool use_srgb_format; bool auto_gen_mipmap; - mutable int dirty_params; Sampler default_sampler; static int swizzle_orders[]; @@ -84,19 +90,14 @@ public: ~Texture(); protected: - static DataType get_alloc_type(PixelFormat); - void set_internal_format(PixelFormat); - PixelFormat get_upload_format(PixelFormat) const; + 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; } -protected: - void update_parameter(int) const; - void set_parameter_i(GLenum, int) const; - void set_parameter_f(GLenum, float) const; -public: DEPRECATED void set_min_filter(TextureFilter); DEPRECATED void set_mag_filter(TextureFilter); @@ -136,19 +137,16 @@ public: 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 &, bool srgb = false); + virtual void load_image(const std::string &, unsigned = 0); - virtual void load_image(const std::string &, unsigned, bool srgb = false); + 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. - - If srgb is true and storage is determined by this call, then an sRGB pixel - format will be used. */ - virtual void image(const Graphics::Image &, bool srgb = false); + with the defined storage. Semantics depend on the type of texture. */ + virtual void image(const Graphics::Image &, unsigned = 0) = 0; - virtual void image(const Graphics::Image &, unsigned, bool srgb = false) = 0; + DEPRECATED void image(const Graphics::Image &, bool srgb); GLenum get_target() const { return target; } unsigned get_id() const { return id; }