[][src]Struct processing::program::Program

pub struct Program { /* fields omitted */ }

A combination of shaders linked together.

Methods

impl Program[src]

pub fn new<'a, F, I>(
    facade: &F,
    input: I
) -> Result<Program, ProgramCreationError> where
    F: Facade + ?Sized,
    I: Into<ProgramCreationInput<'a>>, 
[src]

Builds a new program.

pub fn from_source<F>(
    facade: &F,
    vertex_shader: &'a str,
    fragment_shader: &'a str,
    geometry_shader: Option<&'a str>
) -> Result<Program, ProgramCreationError> where
    F: Facade + ?Sized
[src]

Builds a new program from GLSL source code.

A program is a group of shaders linked together.

Parameters

  • vertex_shader: Source code of the vertex shader.
  • fragment_shader: Source code of the fragment shader.
  • geometry_shader: Source code of the geometry shader.

Example

let program = glium::Program::from_source(&display, vertex_source, fragment_source,
    Some(geometry_source));

pub fn get_binary(&self) -> Result<Binary, GetBinaryError>[src]

Returns the program's compiled binary.

You can store the result in a file, then reload it later. This avoids having to compile the source code every time.

pub fn get_frag_data_location(&self, name: &str) -> Option<u32>[src]

Returns the location of an output fragment, if it exists.

The location is low-level information that is used internally by glium. You probably don't need to call this function.

You can declare output fragments in your shaders by writing:

out vec4 foo;

pub fn get_uniform(&self, name: &str) -> Option<&Uniform>[src]

Returns informations about a uniform variable, if it exists.

pub fn uniforms(&self) -> Iter<String, Uniform>[src]

Returns an iterator to the list of uniforms.

Example

for (name, uniform) in program.uniforms() {
    println!("Name: {} - Type: {:?}", name, uniform.ty);
}

pub fn get_uniform_blocks(
    &self
) -> &HashMap<String, UniformBlock, BuildHasherDefault<FnvHasher>>
[src]

Returns a list of uniform blocks.

Example

for (name, uniform) in program.get_uniform_blocks() {
    println!("Name: {}", name);
}

pub fn get_transform_feedback_buffers(&self) -> &[TransformFeedbackBuffer][src]

Returns the list of transform feedback varyings.

pub fn transform_feedback_matches(
    &self,
    format: &Cow<'static, [(Cow<'static, str>, usize, AttributeType, bool)]>,
    stride: usize
) -> bool
[src]

True if the transform feedback output of this program matches the specified VertexFormat and stride.

The stride is the number of bytes between two vertices.

pub fn get_output_primitives(&self) -> Option<OutputPrimitives>[src]

Returns the type of geometry that transform feedback would generate, or None if it depends on the vertex/index data passed when drawing.

This corresponds to GL_GEOMETRY_OUTPUT_TYPE or GL_TESS_GEN_MODE. If the program doesn't contain either a geometry shader or a tessellation evaluation shader, returns None.

pub fn has_tessellation_shaders(&self) -> bool[src]

Returns true if the program contains a tessellation stage.

pub fn has_tessellation_control_shader(&self) -> bool[src]

Returns true if the program contains a tessellation control stage.

pub fn has_tessellation_evaluation_shader(&self) -> bool[src]

Returns true if the program contains a tessellation evaluation stage.

pub fn has_geometry_shader(&self) -> bool[src]

Returns true if the program contains a geometry shader.

pub fn get_attribute(&self, name: &str) -> Option<&Attribute>[src]

Returns informations about an attribute, if it exists.

pub fn attributes(&self) -> Iter<String, Attribute>[src]

Returns an iterator to the list of attributes.

Example

for (name, attribute) in program.attributes() {
    println!("Name: {} - Type: {:?}", name, attribute.ty);
}

pub fn has_srgb_output(&self) -> bool[src]

Returns true if the program has been configured to output sRGB instead of RGB.

pub fn get_shader_storage_blocks(
    &self
) -> &HashMap<String, UniformBlock, BuildHasherDefault<FnvHasher>>
[src]

Returns the list of shader storage blocks.

Example

for (name, uniform) in program.get_shader_storage_blocks() {
    println!("Name: {}", name);
}

pub fn get_subroutine_uniforms(
    &self
) -> &HashMap<(String, ShaderStage), SubroutineUniform, BuildHasherDefault<FnvHasher>>
[src]

Returns the subroutine uniforms of this program.

Since subroutine uniforms are unique per shader and not per program, the keys of the HashMap are in the format ("subroutine_name", ShaderStage).

Example

for (&(ref name, shader), uniform) in program.get_subroutine_uniforms() {
    println!("Name: {}", name);
}

pub fn uses_point_size(&self) -> bool[src]

Returns true if the program has been configured to use the gl_PointSize variable.

If the program uses gl_PointSize without having been configured appropriately, then setting the value of gl_PointSize will have no effect.

Trait Implementations

impl Debug for Program[src]

impl GlObject for Program[src]

type Id = Handle

The type of identifier for this object.

Auto Trait Implementations

impl !Send for Program

impl !Sync for Program

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Same for T

type Output = T

Should always be Self

impl<SS, SP> SupersetOf for SP where
    SS: SubsetOf<SP>, 

impl<T> SetParameter for T

fn set<T>(&mut self, value: T) -> <T as Parameter<Self>>::Result where
    T: Parameter<Self>, 

Sets value as a parameter of self.

impl<T> Erased for T[src]