void Model::draw(const RenderContext& context) { if (!m_material) { log_error("Model::draw: no material set"); } else { OpenGLState state; MaterialPtr material; if (context.get_override_material()) { if (m_material->cast_shadow()) { material = context.get_override_material(); } } else { material = m_material; } if (material) { material->apply(context); for (MeshLst::iterator i = m_meshes.begin(); i != m_meshes.end(); ++i) { (*i)->draw(); } } glUseProgram(0); } }