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
add("texunit", &Loader::texunit_named);
add("uniforms", &Loader::uniforms);
add("uniform_slot", &Loader::uniform_slot);
+ add("uniform_slot", &Loader::uniform_slot2);
}
void RenderPass::Loader::material_inline()
RenderPass::TextureLoader::TextureLoader(Texturing &t, unsigned i, Collection *c):
DataFile::CollectionObjectLoader<Texturing>(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<Sampler>(name);
+}
+
void RenderPass::TextureLoader::texture(const string &name)
{
- obj.attach(index, get_collection().get<Texture>(name));
+ tex = &get_collection().get<Texture>(name);
}
} // namespace GL