glium::program!
[−]
[src]
macro_rules! program { ($facade:expr,) => { ... }; ($facade:expr,,$($rest:tt)*) => { ... }; ($facade:expr, $num:tt => $($rest:tt)*) => { ... }; ($facade:expr, $num:tt es => $($rest:tt)*) => { ... }; (_inner, $context:ident, $vers:ident, {$($ty:ident:$src:expr),+}$($rest:tt)*) => { ... }; (_inner, $context:ident, $vers:ident, {$($ty:ident:$src:expr),+,}$($rest:tt)*) => { ... }; (_program_ty vertex, $src:expr, $vs:ident, $tcs:ident, $tes:ident, $gs:ident, $fs:ident, $srgb:ident, $ps:ident) => { ... }; (_program_ty tessellation_control, $src:expr, $vs:ident, $tcs:ident, $tes:ident, $gs:ident, $fs:ident, $srgb:ident, $ps:ident) => { ... }; (_program_ty tessellation_evaluation, $src:expr, $vs:ident, $tcs:ident, $tes:ident, $gs:ident, $fs:ident, $srgb:ident, $ps:ident) => { ... }; (_program_ty geometry, $src:expr, $vs:ident, $tcs:ident, $tes:ident, $gs:ident, $fs:ident, $srgb:ident, $ps:ident) => { ... }; (_program_ty fragment, $src:expr, $vs:ident, $tcs:ident, $tes:ident, $gs:ident, $fs:ident, $srgb:ident, $ps:ident) => { ... }; (_program_ty point_size, $src:expr, $vs:ident, $tcs:ident, $tes:ident, $gs:ident, $fs:ident, $srgb:ident, $ps:ident) => { ... }; (_program_ty outputs_srgb, $src:expr, $vs:ident, $tcs:ident, $tes:ident, $gs:ident, $fs:ident, $srgb:ident, $ps:ident) => { ... }; (_parse_num_gl $num:expr) => { ... }; (_parse_num_gles $num:expr) => { ... }; }
Builds a program depending on the GLSL version supported by the backend.
This is implemented with successive calls to is_glsl_version_supported()
.
Returns a glium::program::ProgramChooserCreationError
.
Example
let program = program!(&display, 300 => { vertex: r#" #version 300 fn main() { gl_Position = vec4(0.0, 0.0, 0.0, 1.0); } "#, fragment: r#" #version 300 out vec4 color; fn main() { color = vec4(1.0, 1.0, 0.0, 1.0); } "#, }, 110 => { vertex: r#" #version 110 fn main() { gl_Position = vec4(0.0, 0.0, 0.0, 1.0); } "#, fragment: r#" #version 110 fn main() { gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0); } "#, }, 300 es => { vertex: r#" #version 110 fn main() { gl_Position = vec4(0.0, 0.0, 0.0, 1.0); } "#, fragment: r#" #version 110 fn main() { gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0); } "#, }, );