1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/// easy way to set uniforms to pass a draw call
///
/// ```
/// #[macro_use]
/// extern crate glin;
/// extern crate na;
/// fn main() {
///     let projection: na::Mat4 = na::one();
///     let view: na::Mat4 = na::one();
///     let model: na::Mat4 = na::one();
///     let uniforms = uniforms!{
///         projection: projection,
///         view: view,
///         model: model,
///         model_view_projection: projection * view * model,
///     };
/// }
#[macro_export]
macro_rules! uniforms {
    { $( $name:ident: $value:expr ),*  } => {
    	{
	        vec![$(
	            $crate::program::uniform(stringify!($name), &$value)
	        ),*]
	    }
    };
    { $( $name:ident: $value:expr, )*  } => {
    	{
	        vec![$(
	            $crate::program::uniform(stringify!($name), &$value)
	        ),*]
	    }
    };
    { $( $location:expr => $value:expr ),*  } => {
    	{
	        vec![$(
	            $crate::program::uniform_location($location, &$value)
	        ),*]
	    }
    };
    { $( $location:expr => $value:expr, )*  } => {
    	{
	        vec![$(
	            $crate::program::uniform_location($location, &$value)
	        ),*]
	    }
    };
}