]> git.tdb.fi Git - libs/gl.git/blobdiff - source/renderpass.cpp
Allocate textures attached to framebuffers automatically
[libs/gl.git] / source / renderpass.cpp
index 18c318b53b8d2ccddb81481411350e24beb9a0ac..b9a2cb83a05a09cbaab1ec3f6ea674a1fec707ac 100644 (file)
@@ -27,6 +27,7 @@ RenderPass::RenderPass():
 { }
 
 RenderPass::RenderPass(const RenderPass &other):
+       Bindable<RenderPass>(other),
        shprog(other.shprog),
        shdata(other.shdata ? new ProgramData(*other.shdata) : 0),
        material(other.material),
@@ -41,6 +42,7 @@ RenderPass::~RenderPass()
 void RenderPass::set_material(const Material *mat)
 {
        material = mat;
+       material.keep();
 }
 
 void RenderPass::set_texture(unsigned index, const Texture *tex)
@@ -53,7 +55,9 @@ void RenderPass::set_texture(unsigned index, const Texture *tex)
                        return;
                }
 
-       throw KeyError("No texture slot for that unit", lexical_cast(index));
+       textures.push_back(TextureSlot(index));
+       textures.back().texture = tex;
+       textures.back().texture.keep();
 }
 
 void RenderPass::bind() const