Struct glium::program::ComputeShader [] [src]

pub struct ComputeShader {
    // some fields omitted
}

A combination of compute shaders linked together.

Methods

impl ComputeShader

fn is_supported<C>(ctxt: &C) -> bool where C: CapabilitiesSource

Returns true if the backend supports compute shaders.

fn from_source<F>(facade: &F, src: &str) -> Result<ComputeShader, ProgramCreationError> where F: Facade

Builds a new compute shader from some source code.

fn from_binary<F>(facade: &F, data: Binary) -> Result<ComputeShader, ProgramCreationError> where F: Facade

Builds a new compute shader from some binary.

fn execute<U>(&self, uniforms: U, x: u32, y: u32, z: u32) where U: Uniforms

Executes the compute shader.

x * y * z work groups will be started. The current work group can be retreived with gl_WorkGroupID. Inside each work group, additional local work groups can be started depending on the attributes of the compute shader itself.

fn execute_indirect<U>(&self, uniforms: U, buffer: BufferSlice<ComputeCommand>) where U: Uniforms

Executes the compute shader.

This is similar to execute, except that the parameters are stored in a buffer.

fn get_binary(&self) -> Result<Binary, GetBinaryError>

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.

fn get_uniform(&self, name: &str) -> Option<&Uniform>

Returns informations about a uniform variable, if it exists.

fn uniforms(&self) -> Iter<String, Uniform>

Returns an iterator to the list of uniforms.

Example

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

fn get_uniform_blocks(&self) -> &HashMap<String, UniformBlock>

Returns a list of uniform blocks.

Example

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

fn get_shader_storage_blocks(&self) -> &HashMap<String, UniformBlock>

Returns the list of shader storage blocks.

Example

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

Trait Implementations

impl Debug for ComputeShader

fn fmt(&self, formatter: &mut Formatter) -> Result<(), Error>

impl GlObject for ComputeShader

type Id = Handle

fn get_id(&self) -> Handle