[−][src]Struct processing::program::Program
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]
facade: &F,
input: I
) -> Result<Program, ProgramCreationError> where
F: Facade + ?Sized,
I: Into<ProgramCreationInput<'a>>,
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]
facade: &F,
vertex_shader: &'a str,
fragment_shader: &'a str,
geometry_shader: Option<&'a str>
) -> Result<Program, ProgramCreationError> where
F: Facade + ?Sized,
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]
&self
) -> &HashMap<String, UniformBlock, BuildHasherDefault<FnvHasher>>
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]
&self,
format: &Cow<'static, [(Cow<'static, str>, usize, AttributeType, bool)]>,
stride: usize
) -> bool
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]
&self
) -> &HashMap<String, UniformBlock, BuildHasherDefault<FnvHasher>>
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]
&self
) -> &HashMap<(String, ShaderStage), SubroutineUniform, BuildHasherDefault<FnvHasher>>
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
Auto Trait Implementations
Blanket Implementations
impl<T, U> Into for T where
U: From<T>,
[src]
U: From<T>,
impl<T> From for T
[src]
impl<T, U> TryFrom for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T> Borrow for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Same for T
type Output = T
Should always be Self
impl<SS, SP> SupersetOf for SP where
SS: SubsetOf<SP>,
SS: SubsetOf<SP>,
fn to_subset(&self) -> Option<SS>
fn is_in_subset(&self) -> bool
unsafe fn to_subset_unchecked(&self) -> SS
fn from_subset(element: &SS) -> SP
impl<T> SetParameter for T
fn set<T>(&mut self, value: T) -> <T as Parameter<Self>>::Result where
T: Parameter<Self>,
T: Parameter<Self>,
Sets value
as a parameter of self
.