void 
GlProgram::setValueOfUniform (int i) {

	GlUniform uni;
	uni = m_Uniforms[i];

	switch(uni.getType()) {
		case GL_FLOAT:
			glUniform1f (uni.getLoc(),uni.getValues()[0]);break;
		case GL_FLOAT_VEC2:
			glUniform2fv (uni.getLoc(),1,uni.getValues());break;
		case GL_FLOAT_VEC3:
			glUniform3fv (uni.getLoc(),1,uni.getValues());break;
		case GL_FLOAT_VEC4:
			glUniform4fv (uni.getLoc(),1,uni.getValues());break;
		case GL_INT:
		case GL_BOOL:
		case GL_SAMPLER_2D:
		case GL_SAMPLER_2D_SHADOW:
		case GL_SAMPLER_1D:
		case GL_SAMPLER_3D:
		case GL_SAMPLER_CUBE:
			glUniform1i(uni.getLoc(),(int)uni.getValues()[0]);break;

		case GL_INT_VEC2: case GL_BOOL_VEC2:
			glUniform2i(uni.getLoc(),(int)uni.getValues()[0],(int)uni.getValues()[1]);break;
		case GL_INT_VEC3:case GL_BOOL_VEC3:
			glUniform3i(uni.getLoc(),(int)uni.getValues()[0],(int)uni.getValues()[1],(int)uni.getValues()[2]);break;
		case GL_INT_VEC4:case GL_BOOL_VEC4:
			glUniform4i(uni.getLoc(),(int)uni.getValues()[0],(int)uni.getValues()[1],(int)uni.getValues()[2],(int)uni.getValues()[3]);break;

		case GL_FLOAT_MAT2:
			glUniformMatrix2fv(uni.getLoc(),1,false,uni.getValues());break;
		case GL_FLOAT_MAT3:
			glUniformMatrix3fv(uni.getLoc(),1,false,uni.getValues());break;
		case GL_FLOAT_MAT4:
			glUniformMatrix4fv(uni.getLoc(),1,false,uni.getValues());break;
	}
}