X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexturing.h;h=0da3eae41794d167d5ee9421943cdac29c9cc74f;hp=2b409d64fb713ee221a4842110832258bd92f711;hb=bec07999d95b76f4b47cffcc564d0cd0afc0435e;hpb=0f890ce60a560ba2ccc0719229be304bb597d919 diff --git a/source/texturing.h b/source/texturing.h index 2b409d64..0da3eae4 100644 --- a/source/texturing.h +++ b/source/texturing.h @@ -12,29 +12,37 @@ class Texture; class Texturing: public Bindable { private: - std::vector attachments; + struct Attachment + { + unsigned unit; + const Texture *texture; + const Sampler *sampler; - static bool legacy_used; + Attachment(unsigned, const Texture *, const Sampler *); + }; + + std::vector attachments; public: ~Texturing(); - void attach(unsigned, const Texture &); + int find_free_unit(const std::string & = std::string()) const; + void attach(unsigned, const Texture &, const Sampler * = 0); + void attach(unsigned, const Sampler &); void detach(unsigned); private: - void set_attachment(unsigned, const Texture *); + void set_attachment(unsigned, const Texture *, const Sampler *); public: const Texture *get_attached_texture(unsigned) const; + const Sampler *get_attached_sampler(unsigned) const; -private: - void bind_attachment(unsigned, bool) const; - - static void unbind_attachment(unsigned); - -public: - void bind(bool = true) const; + void bind() const; static void unbind(); + +private: + void bind_attachment(const Attachment &) const; + static void unbind_attachment(unsigned); }; } // namespace GL