]> git.tdb.fi Git - libs/gl.git/blobdiff - source/renderpass.cpp
Bind ProgramData to a Program upon construction
[libs/gl.git] / source / renderpass.cpp
index b67be7170ae7cff929d24b115552cce009db05e6..d15a70983637f876de06a12bc3a0b9a8a393b4f8 100644 (file)
@@ -74,20 +74,13 @@ void RenderPass::Loader::init()
        allow_pointer_reload = false;
 
        add("shader",   &RenderPass::shprog);
-       add("material", static_cast<void (Loader::*)()>(&Loader::material));
-       add("material", static_cast<void (Loader::*)(const string &)>(&Loader::material));
+       add("material", &Loader::material_inline);
+       add("material", &Loader::material);
        add("texunit",  &Loader::texunit);
        add("uniforms", &Loader::uniforms);
 }
 
-void RenderPass::Loader::finish()
-{
-       // XXX Make shdata optional
-       if(obj.shprog && !obj.shdata)
-               obj.shdata = new ProgramData;
-}
-
-void RenderPass::Loader::material()
+void RenderPass::Loader::material_inline()
 {
        RefPtr<Material> mat = new Material;
        load_sub(*mat);
@@ -113,8 +106,8 @@ void RenderPass::Loader::uniforms()
        if(!obj.shprog)
                throw InvalidState("Can't load uniforms without a shader program");
        if(!obj.shdata)
-               obj.shdata = new ProgramData;
-       load_sub(*obj.shdata, *obj.shprog);
+               obj.shdata = new ProgramData(*obj.shprog);
+       load_sub(*obj.shdata);
 }