X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frenderpass.cpp;h=d15a70983637f876de06a12bc3a0b9a8a393b4f8;hb=5172d32d67595ea0b70184fadcfcb8e023cccbc8;hp=b67be7170ae7cff929d24b115552cce009db05e6;hpb=25c81b4953dd38993250321b9407ce8b0139cbeb;p=libs%2Fgl.git diff --git a/source/renderpass.cpp b/source/renderpass.cpp index b67be717..d15a7098 100644 --- a/source/renderpass.cpp +++ b/source/renderpass.cpp @@ -74,20 +74,13 @@ void RenderPass::Loader::init() allow_pointer_reload = false; add("shader", &RenderPass::shprog); - add("material", static_cast(&Loader::material)); - add("material", static_cast(&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 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); }