1use super::gli;
2
3pub enum UniformValue {
4 Float(f32),
5 FloatVec2(f32, f32),
6 FloatVec3(f32, f32, f32),
7 FloatVec4(f32, f32, f32, f32),
8
9 Int(i32),
10 IntVec2(i32, i32),
11 IntVec3(i32, i32, i32),
12 IntVec4(i32, i32, i32, i32),
13
14 Texture2D(u32),
15}
16
17pub fn set_value_for_uniform(location: u32, value: &UniformValue) {
18 match value {
19 UniformValue::Float(f) => gli::uniform_1f(location, *f),
20 UniformValue::FloatVec2(x, y) => gli::uniform_2f(location, *x, *y),
21 UniformValue::FloatVec3(x, y, z) => gli::uniform_3f(location, *x, *y, *z),
22 UniformValue::FloatVec4(x, y, z, w) => gli::uniform_4f(location, *x, *y, *z, *w),
23 UniformValue::Int(i) => gli::uniform_1i(location, *i),
24 UniformValue::IntVec2(x, y) => gli::uniform_2i(location, *x, *y),
25 UniformValue::IntVec3(x, y, z) => gli::uniform_3i(location, *x, *y, *z),
26 UniformValue::IntVec4(x, y, z, w) => gli::uniform_4i(location, *x, *y, *z, *w),
27 _ => (),
28 }
29}