gllite/
uniforms.rs

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}