X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fcore%2Ftexture.h;h=6073cdcb2fcb5e071145731e4c1c88abbf1d02b0;hp=47b2f2696efd35bd07b0c8c52811cc46359d2d63;hb=160e9eea29bd10034733d59507fa1bcca36be401;hpb=93448d16e72e38afbaecbccf6fdedd46d6a82a73 diff --git a/source/core/texture.h b/source/core/texture.h index 47b2f269..6073cdcb 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 { @@ -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