screenruster_saver::program!
[−]
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); } "#, }, );