X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Ftexture.h;h=2f647b90cae721837f441a59c4c67e5c5f3f31fd;hb=f19366d32cc29287a2730cfba90893e407754081;hp=47b2f2696efd35bd07b0c8c52811cc46359d2d63;hpb=24b24e2203c776aacd9744bb947f5cf47b03d328;p=libs%2Fgl.git diff --git a/source/core/texture.h b/source/core/texture.h index 47b2f269..2f647b90 100644 --- a/source/core/texture.h +++ b/source/core/texture.h @@ -5,6 +5,7 @@ #include #include "pixelformat.h" #include "resource.h" +#include "texture_backend.h" namespace Msp { namespace GL { @@ -18,10 +19,10 @@ A texture can consinst of a stack of images, called a mipmap. The dimensions of each mipmap level are half that of the previous level. The mipmap stack can be used for texture minification; see the Sampler class for details. */ -class Texture: public Resource +class Texture: public TextureBackend, public Resource { - friend class Framebuffer; - friend class PipelineState; + friend TextureBackend; + protected: class Loader: public DataFile::CollectionObjectLoader { @@ -29,10 +30,10 @@ protected: unsigned levels; public: - Loader(Texture &); - Loader(Texture &, Collection &); + Loader(Texture &t): Loader(t, 0) { } + Loader(Texture &t, Collection &c): Loader(t, &c) { } private: - void init(); + Loader(Texture &, Collection *); virtual void finish(); @@ -56,34 +57,20 @@ protected: RGB_TO_BGR }; - unsigned id; - unsigned target; PixelFormat format; PixelFormat storage_fmt; FormatSwizzle swizzle; bool use_srgb_format; bool auto_gen_mipmap; - std::string debug_name; - - static const int swizzle_orders[]; - static Texture *scratch_binding; Texture(unsigned, ResourceManager * = 0); - Texture(const Texture &); - Texture &operator=(const Texture &); -public: - ~Texture(); -protected: - void generate_id(); void set_format(PixelFormat); - void apply_swizzle(); - void set_parameter_i(unsigned, int) const; public: PixelFormat get_format() const { return format; } - void generate_mipmap(); + using TextureBackend::generate_mipmap; /// Loads a Graphics::Image from a file and uploads it to the texture. virtual void load_image(const std::string &, unsigned = 0); @@ -95,12 +82,7 @@ public: virtual std::uint64_t get_data_size() const { return 0; } - void set_debug_name(const std::string &); - -protected: - void bind_scratch(); -public: - static void unbind_scratch(); + using TextureBackend::set_debug_name; }; } // namespace GL