X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fmaterials%2Frenderpass.h;h=8a69ad12afcc5397739781e91242a8f79cfecc59;hb=6f39983060a27634c012f66c82fea0d09fea9774;hp=0e8ccdf236e68b88c75d9d7ba8095f569bd37d6c;hpb=fa2b4c8a93ebad2497cacfdeaa9a2c20be486520;p=libs%2Fgl.git diff --git a/source/materials/renderpass.h b/source/materials/renderpass.h index 0e8ccdf2..8a69ad12 100644 --- a/source/materials/renderpass.h +++ b/source/materials/renderpass.h @@ -3,11 +3,11 @@ #include #include +#include "material.h" namespace Msp { namespace GL { -class Material; class Program; class ProgramData; class Renderer; @@ -36,8 +36,8 @@ public: void material_inline(); void material(const std::string &); void shader(const std::string &); + void texture(const std::string &); void texunit(unsigned); - void texunit_auto(const std::string &); void texunit_named(unsigned, const std::string &); void uniforms(); void uniform_slot(const std::string &); @@ -45,20 +45,26 @@ public: }; private: - struct TextureLoader: public DataFile::CollectionObjectLoader + struct TextureSlot { - private: - unsigned index; - const Texture *tex; - const Sampler *samp; + class Loader: public DataFile::CollectionObjectLoader + { + private: + std::string auto_slot_name; - public: - TextureLoader(Texturing &, unsigned, Collection *); - private: - virtual void finish(); + public: + Loader(TextureSlot &, const std::string &, Collection *); - void sampler(const std::string &); - void texture(const std::string &); + private: + void slot_auto(); + }; + + Tag tag; + std::string slot_name; + const Texture *texture; + const Sampler *sampler; + + TextureSlot(Tag t): tag(t), texture(0), sampler(0) { } }; RefPtr shprog; @@ -67,15 +73,11 @@ private: std::map uniform_slots; RefPtr material; std::string material_slot; - Texturing *texturing; - std::map tex_names; + std::vector textures; bool back_faces; public: RenderPass(); - RenderPass(const RenderPass &); - RenderPass &operator=(const RenderPass &); - ~RenderPass(); private: void finalize_material(DataFile::Collection *); @@ -90,9 +92,11 @@ public: void set_material(const Material *, DataFile::Collection * = 0); const Material *get_material() const { return material.get(); } const std::string &get_material_slot_name() const { return material_slot; } - void set_texture(unsigned, const Texture *, const Sampler * = 0); - const Texturing *get_texturing() const { return texturing; } - int get_texture_index(const std::string &) const; + void set_texture(Tag, const Texture *, const Sampler * = 0); + Tag get_texture_tag(const std::string &) const; + DEPRECATED void set_texture(unsigned, const Texture *, const Sampler * = 0); + DEPRECATED const Texturing *get_texturing() const { return 0; } + DEPRECATED int get_texture_index(const std::string &) const; void set_back_faces(bool); bool get_back_faces() const { return back_faces; }