void opengl::ShaderUniforms::setUniform4f(const SCP_string &name, const float x, const float y, const float z, const float w) { vec4 temp; temp.xyzw.x = x; temp.xyzw.y = y; temp.xyzw.z = z; temp.xyzw.w = w; setUniform4f(name, temp); }
//-------------------------------------------------------------- void ofShader::setUniforms(const ofParameterGroup & parameters) const{ for(int i=0;i<parameters.size();i++){ if(parameters[i].type()==typeid(ofParameter<int>).name()){ setUniform1i(parameters[i].getEscapedName(),parameters[i].cast<int>()); }else if(parameters[i].type()==typeid(ofParameter<float>).name()){ setUniform1f(parameters[i].getEscapedName(),parameters[i].cast<float>()); }else if(parameters[i].type()==typeid(ofParameter<ofVec2f>).name()){ setUniform2f(parameters[i].getEscapedName(),parameters[i].cast<ofVec2f>()); }else if(parameters[i].type()==typeid(ofParameter<ofVec3f>).name()){ setUniform3f(parameters[i].getEscapedName(),parameters[i].cast<ofVec3f>()); }else if(parameters[i].type()==typeid(ofParameter<ofVec4f>).name()){ setUniform4f(parameters[i].getEscapedName(),parameters[i].cast<ofVec4f>()); }else if(parameters[i].type()==typeid(ofParameterGroup).name()){ setUniforms((ofParameterGroup&)parameters[i]); } } }
//-------------------------------------------------------------- void ofShader::setUniform4f(const string & name, const ofVec4f & v) const{ setUniform4f(name,v.x,v.y,v.z,v.w); }
void setUniform(const fvec4& value) { setUniform4f(1, value.ptr()); }
void setUniform(int count, const fvec4* value) { setUniform4f(count, value->ptr()); }
int ShaderProgram::setUniform(const std::string &uniformName, Vec4 & value) { addUniform( uniformName ); setUniform4f( uniformName, value); }