use super::gli;
pub enum UniformValue {
Float(f32),
FloatVec2(f32, f32),
FloatVec3(f32, f32, f32),
FloatVec4(f32, f32, f32, f32),
Int(i32),
IntVec2(i32, i32),
IntVec3(i32, i32, i32),
IntVec4(i32, i32, i32, i32),
Texture2D(u32),
}
pub fn set_value_for_uniform(location: u32, value: &UniformValue) {
match value {
UniformValue::Float(f) => gli::uniform_1f(location, *f),
UniformValue::FloatVec2(x, y) => gli::uniform_2f(location, *x, *y),
UniformValue::FloatVec3(x, y, z) => gli::uniform_3f(location, *x, *y, *z),
UniformValue::FloatVec4(x, y, z, w) => gli::uniform_4f(location, *x, *y, *z, *w),
UniformValue::Int(i) => gli::uniform_1i(location, *i),
UniformValue::IntVec2(x, y) => gli::uniform_2i(location, *x, *y),
UniformValue::IntVec3(x, y, z) => gli::uniform_3i(location, *x, *y, *z),
UniformValue::IntVec4(x, y, z, w) => gli::uniform_4i(location, *x, *y, *z, *w),
_ => (),
}
}