Trait luminance::shader::program::HasProgram [] [src]

pub trait HasProgram: HasStage {
    type Program;
    fn new_program(tess: Option<(&Self::AStage, &Self::AStage)>,
                   vertex: &Self::AStage,
                   geometry: Option<&Self::AStage>,
                   fragment: &Self::AStage,
                   sem_map: &[Sem])
                   -> Result<(Self::Program, Vec<UniformWarning>), ProgramError>; fn free_program(program: &mut Self::Program); fn update_uniforms<F>(program: &Self::Program, f: F) where F: Fn(); fn update1_i32(program: &Self::Program, uniform: SemIndex, x: i32); fn update2_i32(program: &Self::Program, uniform: SemIndex, xy: [i32; 2]); fn update3_i32(program: &Self::Program, uniform: SemIndex, xyz: [i32; 3]); fn update4_i32(program: &Self::Program, uniform: SemIndex, xyzw: [i32; 4]); fn update1_slice_i32(program: &Self::Program, uniform: SemIndex, x: &[i32]); fn update2_slice_i32(program: &Self::Program,
                         uniform: SemIndex,
                         xy: &[[i32; 2]]); fn update3_slice_i32(program: &Self::Program,
                         uniform: SemIndex,
                         xyz: &[[i32; 3]]); fn update4_slice_i32(program: &Self::Program,
                         uniform: SemIndex,
                         xyzw: &[[i32; 4]]); fn update1_u32(program: &Self::Program, uniform: SemIndex, x: u32); fn update2_u32(program: &Self::Program, uniform: SemIndex, xy: [u32; 2]); fn update3_u32(program: &Self::Program, uniform: SemIndex, xyz: [u32; 3]); fn update4_u32(program: &Self::Program, uniform: SemIndex, xyzw: [u32; 4]); fn update1_slice_u32(program: &Self::Program, uniform: SemIndex, x: &[u32]); fn update2_slice_u32(program: &Self::Program,
                         uniform: SemIndex,
                         xy: &[[u32; 2]]); fn update3_slice_u32(program: &Self::Program,
                         uniform: SemIndex,
                         xyz: &[[u32; 3]]); fn update4_slice_u32(program: &Self::Program,
                         uniform: SemIndex,
                         xyzw: &[[u32; 4]]); fn update1_f32(program: &Self::Program, uniform: SemIndex, x: f32); fn update2_f32(program: &Self::Program, uniform: SemIndex, xy: [f32; 2]); fn update3_f32(program: &Self::Program, uniform: SemIndex, xyz: [f32; 3]); fn update4_f32(program: &Self::Program, uniform: SemIndex, xyzw: [f32; 4]); fn update1_slice_f32(program: &Self::Program, uniform: SemIndex, x: &[f32]); fn update2_slice_f32(program: &Self::Program,
                         uniform: SemIndex,
                         xy: &[[f32; 2]]); fn update3_slice_f32(program: &Self::Program,
                         uniform: SemIndex,
                         xyz: &[[f32; 3]]); fn update4_slice_f32(program: &Self::Program,
                         uniform: SemIndex,
                         xyzw: &[[f32; 4]]); fn update22_f32(program: &Self::Program, uniform: SemIndex, x: M22); fn update33_f32(program: &Self::Program, uniform: SemIndex, x: M33); fn update44_f32(program: &Self::Program, uniform: SemIndex, x: M44); fn update22_slice_f32(program: &Self::Program, uniform: SemIndex, x: &[M22]); fn update33_slice_f32(program: &Self::Program, uniform: SemIndex, x: &[M33]); fn update44_slice_f32(program: &Self::Program, uniform: SemIndex, x: &[M44]); fn update1_bool(program: &Self::Program, uniform: SemIndex, x: bool); fn update2_bool(program: &Self::Program, uniform: SemIndex, xy: [bool; 2]); fn update3_bool(program: &Self::Program, uniform: SemIndex, xyz: [bool; 3]); fn update4_bool(program: &Self::Program, uniform: SemIndex, xyzw: [bool; 4]); fn update1_slice_bool(program: &Self::Program,
                          uniform: SemIndex,
                          x: &[bool]); fn update2_slice_bool(program: &Self::Program,
                          uniform: SemIndex,
                          xy: &[[bool; 2]]); fn update3_slice_bool(program: &Self::Program,
                          uniform: SemIndex,
                          xyz: &[[bool; 3]]); fn update4_slice_bool(program: &Self::Program,
                          uniform: SemIndex,
                          xyzw: &[[bool; 4]]); fn update_texture_unit(program: &Self::Program,
                           uniform: SemIndex,
                           unit: u32); fn update_buffer_binding(program: &Self::Program,
                             uniform_block: SemIndex,
                             binding: u32); }

Trait to implement to provide shader program features.

Associated Types

Required Methods

Create a new program by linking it with stages.

The last argument – sem_map – is a mapping between your semantic and the names of the code variables they represent. You can generate them out of Uniforms with the Uniform::sem function.

Examples

TODO

Free a program.

Bulk update of uniforms. The update closure should contain the code used to update as many uniforms as wished.

Implementors