# class glw::Texture

Basic texture type.

    #include <Texture.h>

    class Texture {
    public:
        // construction

        Texture();
        virtual ~Texture();

        // methods

        void Initialize(const gl::GLenum internal_format);
        void Enable();
        void Disable();
        void Unbind();
        void Bind();
        void Bind(const uint8_t binding_unit);
        gl::GLuint GetID();
        gl::GLenum GetInternalFormat();
        void SetFiltering(const Filtering mag_min);
        virtual void SetFiltering(const Filtering mag, const Filtering min);
        void SetWrapping(const Wrapping wrap_st);
        virtual void SetWrapping(const Wrapping wrap_s, const Wrapping wrap_t);
        virtual void SetParameteri(const gl::GLenum pname, const gl::GLint param);
        void SetParameterfv(const gl::GLenum pname, const gl::GLfloat* param);

    protected:
        // methods

        virtual gl::GLenum GetTarget() = 0;
        virtual void ReserveMemory() = 0;
    };