- shdata = new ProgramData(*shdata, shprog);
+ {
+ RefPtr<ProgramData> old_shdata = shdata;
+ shdata = new ProgramData(shprog);
+ shdata->copy_uniforms(*old_shdata);
+ }
add("blend", &Loader::blend);
add("blend", &Loader::blend_factors);
add("face_cull", &RenderMethod::face_cull);
add("blend", &Loader::blend);
add("blend", &Loader::blend_factors);
add("face_cull", &RenderMethod::face_cull);
add("material", &Loader::material_inline);
add("material", &Loader::material);
add("material_slot", &RenderMethod::material_slot);
add("material", &Loader::material_inline);
add("material", &Loader::material);
add("material_slot", &RenderMethod::material_slot);
- obj.shdata = new ProgramData(*obj.shdata, obj.shprog);
+ {
+ RefPtr<ProgramData> old_shdata = obj.shdata;
+ obj.shdata = new ProgramData(obj.shprog);
+ obj.shdata->copy_uniforms(*old_shdata);
+ }
auto i = find_member(obj.textures, Tag(n), &TextureSlot::tag);
if(i==obj.textures.end())
{
auto i = find_member(obj.textures, Tag(n), &TextureSlot::tag);
if(i==obj.textures.end())
{
i = obj.textures.end()-1;
}
TextureSlot::Loader ldr(*i, n, coll);
i = obj.textures.end()-1;
}
TextureSlot::Loader ldr(*i, n, coll);