-void RenderPass::set_texture(unsigned index, const Texture *tex, const Sampler *samp)
-{
- if(!shprog)
- throw invalid_operation("RenderPass::set_texture");
-
- const vector<ReflectData::UniformInfo> &uniforms = shprog->get_uniforms();
- for(const ReflectData::UniformInfo &u: uniforms)
- if(is_image(u.type) && u.binding==static_cast<int>(index))
- return set_texture(u.tag, tex, samp);
-
- if(shdata)
- {
- for(Tag t: shdata->get_uniform_tags())
- {
- auto j = find_member(uniforms, t, &ReflectData::UniformInfo::tag);
- if(j==uniforms.end() || !is_image(j->type))
- continue;
- if(const Uniform1i *uni1i = dynamic_cast<const Uniform1i *>(shdata->find_uniform(t)))
- if(uni1i->get()==static_cast<int>(index))
- return set_texture(t, tex, samp);
- }
- }
-}
-
-int RenderPass::get_texture_index(const string &n) const
-{
- auto i = find_member(textures, n, &TextureSlot::slot_name);
- return (shprog && i!=textures.end() ? shprog->get_uniform_binding(i->tag) : -1);
-}
-