[][src]Struct glium::Program

pub struct Program { /* fields omitted */ }

A combination of shaders linked together.

Implementations

impl Program[src]

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

Builds a new program.

pub fn from_source<'a, F: ?Sized>(
    facade: &F,
    vertex_shader: &'a str,
    fragment_shader: &'a str,
    geometry_shader: Option<&'a str>
) -> Result<Program, ProgramCreationError> where
    F: Facade
[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: &VertexFormat,
    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_atomic_counters(
    &self
) -> &HashMap<String, UniformBlock, BuildHasherDefault<FnvHasher>>
[src]

Returns the list of shader storage blocks.

Example

for (name, uniform) in program.get_atomic_counters() {
    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 !RefUnwindSafe for Program

impl !Send for Program

impl !Sync for Program

impl Unpin for Program

impl !UnwindSafe for Program

Blanket Implementations

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

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

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

impl<T> From<T> for T[src]

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

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

The type returned in the event of a conversion error.