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. Each semantic is represented by the index of the name in the slice you pass in.

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