void ofMaterial::updateMaterial(const ofShader & shader,ofGLProgrammableRenderer & renderer) const{ shader.setUniform4fv("mat_ambient", &data.ambient.r); shader.setUniform4fv("mat_diffuse", &data.diffuse.r); shader.setUniform4fv("mat_specular", &data.specular.r); shader.setUniform4fv("mat_emissive", &data.emissive.r); shader.setUniform4fv("global_ambient", &ofGetGlobalAmbientColor().r); shader.setUniform1f("mat_shininess",data.shininess); for(auto & uniform: uniforms1f){ shader.setUniform1f(uniform.first, uniform.second); } for (auto & uniform : uniforms2f) { shader.setUniform2f(uniform.first, uniform.second); } for (auto & uniform : uniforms3f) { shader.setUniform3f(uniform.first, uniform.second); } for (auto & uniform : uniforms4f) { shader.setUniform4f(uniform.first, uniform.second); } for (auto & uniform : uniforms1i) { shader.setUniform1i(uniform.first, uniform.second); } for (auto & uniform : uniforms2i) { shader.setUniform2i(uniform.first, uniform.second.x, uniform.second.y); } for (auto & uniform : uniforms3i) { shader.setUniform3i(uniform.first, uniform.second.x, uniform.second.y, uniform.second.z); } for (auto & uniform : uniforms4i) { shader.setUniform4i(uniform.first, uniform.second.x, uniform.second.y, uniform.second.z, uniform.second.w); } for (auto & uniform : uniforms4m) { shader.setUniformMatrix4f(uniform.first, uniform.second); } for (auto & uniform : uniforms3m) { shader.setUniformMatrix3f(uniform.first, uniform.second); } for (auto & uniform : uniformstex) { shader.setUniformTexture(uniform.first, uniform.second.textureTarget, uniform.second.textureID, uniform.second.textureLocation); } }