set_technique(t);
}
+// Avoid synthesizing ~RefPtr in files including object.h
Object::~Object()
-{
-}
+{ }
void Object::set_mesh(unsigned i, const Mesh *m)
{
if(i>meshes.size())
- throw invalid_argument("Object::set_mesh");
+ throw out_of_range("Object::set_mesh");
if(i==meshes.size())
meshes.push_back(m);
return;
Renderer::Push push(renderer);
- renderer.set_shader(pass->get_shader_program(), pass->get_shader_data());
+ renderer.set_shader_program(pass->get_shader_program(), pass->get_shader_data());
renderer.set_material(pass->get_material());
renderer.set_texturing(pass->get_texturing());
+ setup_render(renderer, tag);
meshes.front()->draw(renderer);
+ finish_render(renderer, tag);
}
void Object::render(Renderer &renderer, const ObjectInstance &inst, const Tag &tag) const
return;
Renderer::Push push(renderer);
- renderer.set_shader(pass->get_shader_program(), pass->get_shader_data());
+ renderer.set_shader_program(pass->get_shader_program(), pass->get_shader_data());
renderer.set_material(pass->get_material());
renderer.set_texturing(pass->get_texturing());
+ setup_render(renderer, tag);
inst.setup_render(renderer, tag);
unsigned lod = min<unsigned>(inst.get_level_of_detail(renderer), meshes.size()-1);
meshes[lod]->draw(renderer);
inst.finish_render(renderer, tag);
+ finish_render(renderer, tag);
}
const RenderPass *Object::get_pass(const Tag &tag) const
void Object::Loader::mesh_inline_lod(unsigned l)
{
if(l>obj.meshes.size())
- throw invalid_argument("Object::Loader::mesh_inline_lod");
+ throw out_of_range("Object::Loader::mesh_inline_lod");
RefPtr<Mesh> msh = new Mesh;
load_sub(*msh);