]> git.tdb.fi Git - libs/gl.git/blobdiff - source/materials/renderpass.cpp
Add a collection parameter to RenderPass::set_material
[libs/gl.git] / source / materials / renderpass.cpp
index 561eab6a7045f9f5448701398737cf370b4c1af6..810b3673e584671423c95795a0eaab5cdd9c5e93 100644 (file)
@@ -77,7 +77,7 @@ void RenderPass::maybe_create_material_shader(DataFile::Collection *coll)
                shprog.keep();
        }
        else
-               shprog = material->create_compatible_shader();
+               throw invalid_operation("no collection");
 
        if(shdata)
                shdata = new ProgramData(*shdata, shprog.get());
@@ -117,19 +117,19 @@ const string &RenderPass::get_slotted_uniform_name(const string &slot) const
        return i->second;
 }
 
-void RenderPass::set_material(const Material *mat)
+void RenderPass::set_material(const Material *mat, DataFile::Collection *coll)
 {
        material = mat;
        material.keep();
-       finalize_material(0);
+       finalize_material(coll);
 }
 
-void RenderPass::set_texture(unsigned index, const Texture *tex)
+void RenderPass::set_texture(unsigned index, const Texture *tex, const Sampler *samp)
 {
        if(!texturing)
                texturing = new Texturing;
 
-       texturing->attach(index, *tex, texturing->get_attached_sampler(index));
+       texturing->attach(index, *tex, (samp ? samp : texturing->get_attached_sampler(index)));
 }
 
 int RenderPass::get_texture_index(const string &n) const