Trait gfx::Factory[][src]

pub trait Factory<R> where
    R: Resources
{ pub fn get_capabilities(&self) -> &Capabilities;
pub fn create_buffer_raw(
        &mut self,
        Info
    ) -> Result<RawBuffer<R>, CreationError>;
pub fn create_buffer_immutable_raw(
        &mut self,
        data: &[u8],
        stride: usize,
        Role,
        Bind
    ) -> Result<RawBuffer<R>, CreationError>;
pub fn create_pipeline_state_raw(
        &mut self,
        &Program<R>,
        &Descriptor
    ) -> Result<RawPipelineState<R>, CreationError>;
pub fn create_program(
        &mut self,
        shader_set: &ShaderSet<R>
    ) -> Result<Program<R>, CreateProgramError>;
pub fn create_shader(
        &mut self,
        stage: Stage,
        code: &[u8]
    ) -> Result<Shader<R>, CreateShaderError>;
pub fn create_sampler(&mut self, SamplerInfo) -> Sampler<R>;
pub fn read_mapping<T>(
        &'a mut self,
        buf: &'b Buffer<R, T>
    ) -> Result<Reader<'b, R, T>, Error>
    where
        T: Copy
;
pub fn write_mapping<T>(
        &'a mut self,
        buf: &'b Buffer<R, T>
    ) -> Result<Writer<'b, R, T>, Error>
    where
        T: Copy
;
pub fn create_texture_raw(
        &mut self,
        Info,
        Option<ChannelType>,
        Option<(&[&[u8]], Mipmap)>
    ) -> Result<RawTexture<R>, CreationError>;
pub fn view_buffer_as_shader_resource_raw(
        &mut self,
        &RawBuffer<R>,
        Format
    ) -> Result<RawShaderResourceView<R>, ResourceViewError>;
pub fn view_buffer_as_unordered_access_raw(
        &mut self,
        &RawBuffer<R>
    ) -> Result<RawUnorderedAccessView<R>, ResourceViewError>;
pub fn view_texture_as_shader_resource_raw(
        &mut self,
        &RawTexture<R>,
        ResourceDesc
    ) -> Result<RawShaderResourceView<R>, ResourceViewError>;
pub fn view_texture_as_unordered_access_raw(
        &mut self,
        &RawTexture<R>
    ) -> Result<RawUnorderedAccessView<R>, ResourceViewError>;
pub fn view_texture_as_render_target_raw(
        &mut self,
        &RawTexture<R>,
        RenderDesc
    ) -> Result<RawRenderTargetView<R>, TargetViewError>;
pub fn view_texture_as_depth_stencil_raw(
        &mut self,
        &RawTexture<R>,
        DepthStencilDesc
    ) -> Result<RawDepthStencilView<R>, TargetViewError>; pub fn create_buffer_immutable<T>(
        &mut self,
        data: &[T],
        role: Role,
        bind: Bind
    ) -> Result<Buffer<R, T>, CreationError>
    where
        T: Pod
, { ... }
pub fn create_buffer<T>(
        &mut self,
        num: usize,
        role: Role,
        usage: Usage,
        bind: Bind
    ) -> Result<Buffer<R, T>, CreationError> { ... }
pub fn create_shader_vertex(
        &mut self,
        code: &[u8]
    ) -> Result<VertexShader<R>, CreateShaderError> { ... }
pub fn create_shader_hull(
        &mut self,
        code: &[u8]
    ) -> Result<HullShader<R>, CreateShaderError> { ... }
pub fn create_shader_domain(
        &mut self,
        code: &[u8]
    ) -> Result<DomainShader<R>, CreateShaderError> { ... }
pub fn create_shader_geometry(
        &mut self,
        code: &[u8]
    ) -> Result<GeometryShader<R>, CreateShaderError> { ... }
pub fn create_shader_pixel(
        &mut self,
        code: &[u8]
    ) -> Result<PixelShader<R>, CreateShaderError> { ... }
pub fn create_texture<S>(
        &mut self,
        kind: Kind,
        levels: u8,
        bind: Bind,
        usage: Usage,
        channel_hint: Option<ChannelType>
    ) -> Result<Texture<R, S>, CreationError>
    where
        S: SurfaceTyped
, { ... }
pub fn view_buffer_as_shader_resource<T>(
        &mut self,
        buf: &Buffer<R, T>
    ) -> Result<ShaderResourceView<R, T>, ResourceViewError>
    where
        T: Formatted
, { ... }
pub fn view_buffer_as_unordered_access<T>(
        &mut self,
        buf: &Buffer<R, T>
    ) -> Result<UnorderedAccessView<R, T>, ResourceViewError> { ... }
pub fn view_texture_as_shader_resource<T>(
        &mut self,
        tex: &Texture<R, <T as Formatted>::Surface>,
        levels: (u8, u8),
        swizzle: Swizzle
    ) -> Result<ShaderResourceView<R, <T as Formatted>::View>, ResourceViewError>
    where
        T: TextureFormat
, { ... }
pub fn view_texture_as_unordered_access<T>(
        &mut self,
        tex: &Texture<R, <T as Formatted>::Surface>
    ) -> Result<UnorderedAccessView<R, <T as Formatted>::View>, ResourceViewError>
    where
        T: TextureFormat
, { ... }
pub fn view_texture_as_render_target<T>(
        &mut self,
        tex: &Texture<R, <T as Formatted>::Surface>,
        level: u8,
        layer: Option<u16>
    ) -> Result<RenderTargetView<R, T>, TargetViewError>
    where
        T: RenderFormat
, { ... }
pub fn view_texture_as_depth_stencil<T>(
        &mut self,
        tex: &Texture<R, <T as Formatted>::Surface>,
        level: u8,
        layer: Option<u16>,
        flags: DepthStencilFlags
    ) -> Result<DepthStencilView<R, T>, TargetViewError>
    where
        T: DepthFormat
, { ... }
pub fn view_texture_as_depth_stencil_trivial<T>(
        &mut self,
        tex: &Texture<R, <T as Formatted>::Surface>
    ) -> Result<DepthStencilView<R, T>, TargetViewError>
    where
        T: DepthFormat
, { ... }
pub fn create_texture_immutable_u8<T>(
        &mut self,
        kind: Kind,
        mipmap: Mipmap,
        data: &[&[u8]]
    ) -> Result<(Texture<R, <T as Formatted>::Surface>, ShaderResourceView<R, <T as Formatted>::View>), CombinedError>
    where
        T: TextureFormat
, { ... }
pub fn create_texture_immutable<T>(
        &mut self,
        kind: Kind,
        mipmap: Mipmap,
        data: &[&[<<T as Formatted>::Surface as SurfaceTyped>::DataType]]
    ) -> Result<(Texture<R, <T as Formatted>::Surface>, ShaderResourceView<R, <T as Formatted>::View>), CombinedError>
    where
        T: TextureFormat
, { ... }
pub fn create_render_target<T>(
        &mut self,
        width: u16,
        height: u16
    ) -> Result<(Texture<R, <T as Formatted>::Surface>, ShaderResourceView<R, <T as Formatted>::View>, RenderTargetView<R, T>), CombinedError>
    where
        T: TextureFormat + RenderFormat
, { ... }
pub fn create_depth_stencil<T>(
        &mut self,
        width: u16,
        height: u16
    ) -> Result<(Texture<R, <T as Formatted>::Surface>, ShaderResourceView<R, <T as Formatted>::View>, DepthStencilView<R, T>), CombinedError>
    where
        T: DepthFormat + TextureFormat
, { ... }
pub fn create_depth_stencil_view_only<T>(
        &mut self,
        width: u16,
        height: u16
    ) -> Result<DepthStencilView<R, T>, CombinedError>
    where
        T: DepthFormat + TextureFormat
, { ... } }

Overview

A Factory is responsible for creating and managing resources for the context it was created with.

Construction and Handling

A Factory is typically created along with other objects using a helper function of the appropriate gfx_window module (e.g. gfx_window_glutin::init()).

This factory structure can then be used to create and manage different resources, like buffers, shader programs and textures. See the individual methods for more information.

This trait is extended by the gfx::FactoryExt trait. All types implementing Factory also implement FactoryExt.

Immutable resources

Immutable buffers and textures can only be read by the GPU. They cannot be written by the GPU and cannot be accessed at all by the CPU.

See:

Raw resources

The term “raw” is used in the context of types of functions that have a strongly typed and an untyped equivalent, to refer to the untyped equivalent.

For example ‘Factory::create_buffer_raw’ and ‘Factory::create_buffer’

Shader resource views and unordered access views

This terminology is borrowed from D3D.

Shader resource views typically wrap textures and buffers to provide read-only access in shaders. An unordered access view provides similar functionality, but enables reading and writing to the buffer or texture in any order.

See:

Required methods

pub fn get_capabilities(&self) -> &Capabilities[src]

Returns the capabilities of this Factory. This usually depends on the graphics API being used.

pub fn create_buffer_raw(&mut self, Info) -> Result<RawBuffer<R>, CreationError>[src]

pub fn create_buffer_immutable_raw(
    &mut self,
    data: &[u8],
    stride: usize,
    Role,
    Bind
) -> Result<RawBuffer<R>, CreationError>
[src]

pub fn create_pipeline_state_raw(
    &mut self,
    &Program<R>,
    &Descriptor
) -> Result<RawPipelineState<R>, CreationError>
[src]

Creates a new RawPipelineState. To create a safely typed PipelineState, see the FactoryExt trait and pso module, both in the gfx crate.

pub fn create_program(
    &mut self,
    shader_set: &ShaderSet<R>
) -> Result<Program<R>, CreateProgramError>
[src]

Creates a new shader Program for the supplied ShaderSet.

pub fn create_shader(
    &mut self,
    stage: Stage,
    code: &[u8]
) -> Result<Shader<R>, CreateShaderError>
[src]

Compiles a shader source into a Shader object that can be used to create a shader Program.

pub fn create_sampler(&mut self, SamplerInfo) -> Sampler<R>[src]

pub fn read_mapping<T>(
    &'a mut self,
    buf: &'b Buffer<R, T>
) -> Result<Reader<'b, R, T>, Error> where
    T: Copy
[src]

Acquire a mapping Reader

See write_mapping for more information.

pub fn write_mapping<T>(
    &'a mut self,
    buf: &'b Buffer<R, T>
) -> Result<Writer<'b, R, T>, Error> where
    T: Copy
[src]

Acquire a mapping Writer

While holding this writer, you hold CPU-side exclusive access. Any access overlap will result in an error. Submitting commands involving this buffer to the device implicitly requires exclusive access. Additionally, further access will be stalled until execution completion.

pub fn create_texture_raw(
    &mut self,
    Info,
    Option<ChannelType>,
    Option<(&[&[u8]], Mipmap)>
) -> Result<RawTexture<R>, CreationError>
[src]

Create a new empty raw texture with no data. The channel type parameter is a hint, required to assist backends that have no concept of typeless formats (OpenGL). The initial data, if given, has to be provided for all mip levels and slices: Slice0.Mip0, Slice0.Mip1, …, Slice1.Mip0, …

pub fn view_buffer_as_shader_resource_raw(
    &mut self,
    &RawBuffer<R>,
    Format
) -> Result<RawShaderResourceView<R>, ResourceViewError>
[src]

pub fn view_buffer_as_unordered_access_raw(
    &mut self,
    &RawBuffer<R>
) -> Result<RawUnorderedAccessView<R>, ResourceViewError>
[src]

pub fn view_texture_as_shader_resource_raw(
    &mut self,
    &RawTexture<R>,
    ResourceDesc
) -> Result<RawShaderResourceView<R>, ResourceViewError>
[src]

pub fn view_texture_as_unordered_access_raw(
    &mut self,
    &RawTexture<R>
) -> Result<RawUnorderedAccessView<R>, ResourceViewError>
[src]

pub fn view_texture_as_render_target_raw(
    &mut self,
    &RawTexture<R>,
    RenderDesc
) -> Result<RawRenderTargetView<R>, TargetViewError>
[src]

pub fn view_texture_as_depth_stencil_raw(
    &mut self,
    &RawTexture<R>,
    DepthStencilDesc
) -> Result<RawDepthStencilView<R>, TargetViewError>
[src]

Loading content...

Provided methods

pub fn create_buffer_immutable<T>(
    &mut self,
    data: &[T],
    role: Role,
    bind: Bind
) -> Result<Buffer<R, T>, CreationError> where
    T: Pod
[src]

pub fn create_buffer<T>(
    &mut self,
    num: usize,
    role: Role,
    usage: Usage,
    bind: Bind
) -> Result<Buffer<R, T>, CreationError>
[src]

pub fn create_shader_vertex(
    &mut self,
    code: &[u8]
) -> Result<VertexShader<R>, CreateShaderError>
[src]

Compiles a VertexShader from source.

pub fn create_shader_hull(
    &mut self,
    code: &[u8]
) -> Result<HullShader<R>, CreateShaderError>
[src]

Compiles a HullShader from source.

pub fn create_shader_domain(
    &mut self,
    code: &[u8]
) -> Result<DomainShader<R>, CreateShaderError>
[src]

Compiles a VertexShader from source.

pub fn create_shader_geometry(
    &mut self,
    code: &[u8]
) -> Result<GeometryShader<R>, CreateShaderError>
[src]

Compiles a GeometryShader from source.

pub fn create_shader_pixel(
    &mut self,
    code: &[u8]
) -> Result<PixelShader<R>, CreateShaderError>
[src]

Compiles a PixelShader from source. This is the same as what some APIs call a fragment shader.

pub fn create_texture<S>(
    &mut self,
    kind: Kind,
    levels: u8,
    bind: Bind,
    usage: Usage,
    channel_hint: Option<ChannelType>
) -> Result<Texture<R, S>, CreationError> where
    S: SurfaceTyped
[src]

pub fn view_buffer_as_shader_resource<T>(
    &mut self,
    buf: &Buffer<R, T>
) -> Result<ShaderResourceView<R, T>, ResourceViewError> where
    T: Formatted
[src]

pub fn view_buffer_as_unordered_access<T>(
    &mut self,
    buf: &Buffer<R, T>
) -> Result<UnorderedAccessView<R, T>, ResourceViewError>
[src]

pub fn view_texture_as_shader_resource<T>(
    &mut self,
    tex: &Texture<R, <T as Formatted>::Surface>,
    levels: (u8, u8),
    swizzle: Swizzle
) -> Result<ShaderResourceView<R, <T as Formatted>::View>, ResourceViewError> where
    T: TextureFormat
[src]

pub fn view_texture_as_unordered_access<T>(
    &mut self,
    tex: &Texture<R, <T as Formatted>::Surface>
) -> Result<UnorderedAccessView<R, <T as Formatted>::View>, ResourceViewError> where
    T: TextureFormat
[src]

pub fn view_texture_as_render_target<T>(
    &mut self,
    tex: &Texture<R, <T as Formatted>::Surface>,
    level: u8,
    layer: Option<u16>
) -> Result<RenderTargetView<R, T>, TargetViewError> where
    T: RenderFormat
[src]

pub fn view_texture_as_depth_stencil<T>(
    &mut self,
    tex: &Texture<R, <T as Formatted>::Surface>,
    level: u8,
    layer: Option<u16>,
    flags: DepthStencilFlags
) -> Result<DepthStencilView<R, T>, TargetViewError> where
    T: DepthFormat
[src]

pub fn view_texture_as_depth_stencil_trivial<T>(
    &mut self,
    tex: &Texture<R, <T as Formatted>::Surface>
) -> Result<DepthStencilView<R, T>, TargetViewError> where
    T: DepthFormat
[src]

pub fn create_texture_immutable_u8<T>(
    &mut self,
    kind: Kind,
    mipmap: Mipmap,
    data: &[&[u8]]
) -> Result<(Texture<R, <T as Formatted>::Surface>, ShaderResourceView<R, <T as Formatted>::View>), CombinedError> where
    T: TextureFormat
[src]

pub fn create_texture_immutable<T>(
    &mut self,
    kind: Kind,
    mipmap: Mipmap,
    data: &[&[<<T as Formatted>::Surface as SurfaceTyped>::DataType]]
) -> Result<(Texture<R, <T as Formatted>::Surface>, ShaderResourceView<R, <T as Formatted>::View>), CombinedError> where
    T: TextureFormat
[src]

pub fn create_render_target<T>(
    &mut self,
    width: u16,
    height: u16
) -> Result<(Texture<R, <T as Formatted>::Surface>, ShaderResourceView<R, <T as Formatted>::View>, RenderTargetView<R, T>), CombinedError> where
    T: TextureFormat + RenderFormat
[src]

pub fn create_depth_stencil<T>(
    &mut self,
    width: u16,
    height: u16
) -> Result<(Texture<R, <T as Formatted>::Surface>, ShaderResourceView<R, <T as Formatted>::View>, DepthStencilView<R, T>), CombinedError> where
    T: DepthFormat + TextureFormat
[src]

pub fn create_depth_stencil_view_only<T>(
    &mut self,
    width: u16,
    height: u16
) -> Result<DepthStencilView<R, T>, CombinedError> where
    T: DepthFormat + TextureFormat
[src]

Loading content...

Implementors

Loading content...