X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Frenderpass.cpp;h=835e78a672cd6203649cdd9cbba4345421fa41b8;hp=8281b2151f3c6c9b54d7ba2c83cc6bbbfad05880;hb=bec07999d95b76f4b47cffcc564d0cd0afc0435e;hpb=3c38aed495719bd895c1ca8df68280747fcb9a6f diff --git a/source/renderpass.cpp b/source/renderpass.cpp index 8281b215..835e78a6 100644 --- a/source/renderpass.cpp +++ b/source/renderpass.cpp @@ -128,7 +128,7 @@ void RenderPass::set_texture(unsigned index, const Texture *tex) if(!texturing) texturing = new Texturing; - texturing->attach(index, *tex); + texturing->attach(index, *tex, texturing->get_attached_sampler(index)); } int RenderPass::get_texture_index(const string &n) const @@ -246,14 +246,30 @@ void RenderPass::Loader::uniform_slot2(const string &name, const string &slot) RenderPass::TextureLoader::TextureLoader(Texturing &t, unsigned i, Collection *c): DataFile::CollectionObjectLoader(t, c), - index(i) + index(i), + tex(0), + samp(0) { + add("sampler", &TextureLoader::sampler); add("texture", &TextureLoader::texture); } +void RenderPass::TextureLoader::finish() +{ + if(tex) + obj.attach(index, *tex, samp); + else if(samp) + obj.attach(index, *samp); +} + +void RenderPass::TextureLoader::sampler(const string &name) +{ + samp = &get_collection().get(name); +} + void RenderPass::TextureLoader::texture(const string &name) { - obj.attach(index, get_collection().get(name)); + tex = &get_collection().get(name); } } // namespace GL