Trait gfx_core::factory::Factory [] [src]

pub trait Factory<R: Resources> {
    type Mapper: Clone + Raw;
    fn get_capabilities(&self) -> &Capabilities;
    fn create_buffer_raw(&mut self, BufferInfo) -> Result<RawBuffer<R>, BufferError>;
    fn create_buffer_const_raw(&mut self, data: &[u8], stride: usize, BufferRole, Bind) -> Result<RawBuffer<R>, BufferError>;
    fn create_pipeline_state_raw(&mut self, &Program<R>, &Descriptor) -> Result<RawPipelineState<R>, CreationError>;
    fn create_program(&mut self, shader_set: &ShaderSet<R>) -> Result<Program<R>, CreateProgramError>;
    fn create_shader(&mut self, stage: Stage, code: &[u8]) -> Result<Shader<R>, CreateShaderError>;
    fn create_sampler(&mut self, SamplerInfo) -> Sampler<R>;
    fn map_buffer_raw(&mut self, &RawBuffer<R>, MapAccess) -> Self::Mapper;
    fn unmap_buffer_raw(&mut self, Self::Mapper);
    fn map_buffer_readable<T: Copy>(&mut self, &Buffer<R, T>) -> Readable<T, R, Self> where Self: Sized;
    fn map_buffer_writable<T: Copy>(&mut self, &Buffer<R, T>) -> Writable<T, R, Self> where Self: Sized;
    fn map_buffer_rw<T: Copy>(&mut self, &Buffer<R, T>) -> RW<T, R, Self> where Self: Sized;
    fn create_texture_raw(&mut self, Descriptor, Option<ChannelType>, Option<&[&[u8]]>) -> Result<RawTexture<R>, Error>;
    fn view_buffer_as_shader_resource_raw(&mut self, &RawBuffer<R>) -> Result<RawShaderResourceView<R>, ResourceViewError>;
    fn view_buffer_as_unordered_access_raw(&mut self, &RawBuffer<R>) -> Result<RawUnorderedAccessView<R>, ResourceViewError>;
    fn view_texture_as_shader_resource_raw(&mut self, &RawTexture<R>, ResourceDesc) -> Result<RawShaderResourceView<R>, ResourceViewError>;
    fn view_texture_as_unordered_access_raw(&mut self, &RawTexture<R>) -> Result<RawUnorderedAccessView<R>, ResourceViewError>;
    fn view_texture_as_render_target_raw(&mut self, &RawTexture<R>, RenderDesc) -> Result<RawRenderTargetView<R>, TargetViewError>;
    fn view_texture_as_depth_stencil_raw(&mut self, &RawTexture<R>, DepthStencilDesc) -> Result<RawDepthStencilView<R>, TargetViewError>;

    fn create_buffer_const<T: Copy>(&mut self, data: &[T], role: BufferRole, bind: Bind) -> Result<Buffer<R, T>, BufferError> { ... }
    fn create_buffer_dynamic<T>(&mut self, num: usize, role: BufferRole, bind: Bind) -> Result<Buffer<R, T>, BufferError> { ... }
    fn create_buffer_staging<T>(&mut self, num: usize, role: BufferRole, bind: Bind, map: MapAccess) -> Result<Buffer<R, T>, BufferError> { ... }
    fn create_shader_vertex(&mut self, code: &[u8]) -> Result<VertexShader<R>, CreateShaderError> { ... }
    fn create_shader_geometry(&mut self, code: &[u8]) -> Result<GeometryShader<R>, CreateShaderError> { ... }
    fn create_shader_pixel(&mut self, code: &[u8]) -> Result<PixelShader<R>, CreateShaderError> { ... }
    fn create_texture<S>(&mut self, kind: Kind, levels: Level, bind: Bind, usage: Usage, channel_hint: Option<ChannelType>) -> Result<Texture<R, S>, Error> where S: SurfaceTyped { ... }
    fn view_buffer_as_shader_resource<T>(&mut self, buf: &Buffer<R, T>) -> Result<ShaderResourceView<R, T>, ResourceViewError> { ... }
    fn view_buffer_as_unordered_access<T>(&mut self, buf: &Buffer<R, T>) -> Result<UnorderedAccessView<R, T>, ResourceViewError> { ... }
    fn view_texture_as_shader_resource<T: TextureFormat>(&mut self, tex: &Texture<R, T::Surface>, levels: (Level, Level), swizzle: Swizzle) -> Result<ShaderResourceView<R, T::View>, ResourceViewError> { ... }
    fn view_texture_as_unordered_access<T: TextureFormat>(&mut self, tex: &Texture<R, T::Surface>) -> Result<UnorderedAccessView<R, T::View>, ResourceViewError> { ... }
    fn view_texture_as_render_target<T: RenderFormat>(&mut self, tex: &Texture<R, T::Surface>, level: Level, layer: Option<Layer>) -> Result<RenderTargetView<R, T>, TargetViewError> { ... }
    fn view_texture_as_depth_stencil<T: DepthFormat>(&mut self, tex: &Texture<R, T::Surface>, level: Level, layer: Option<Layer>, flags: DepthStencilFlags) -> Result<DepthStencilView<R, T>, TargetViewError> { ... }
    fn view_texture_as_depth_stencil_trivial<T: DepthFormat>(&mut self, tex: &Texture<R, T::Surface>) -> Result<DepthStencilView<R, T>, TargetViewError> { ... }
    fn create_texture_const_u8<T: TextureFormat>(&mut self, kind: Kind, data: &[&[u8]]) -> Result<(Texture<R, T::Surface>, ShaderResourceView<R, T::View>)CombinedError> { ... }
    fn create_texture_const<T: TextureFormat>(&mut self, kind: Kind, data: &[&[T::Surface::DataType]]) -> Result<(Texture<R, T::Surface>, ShaderResourceView<R, T::View>)CombinedError> { ... }
    fn create_render_target<T: RenderFormat + TextureFormat>(&mut self, width: Size, height: Size) -> Result<(Texture<R, T::Surface>, ShaderResourceView<R, T::View>, RenderTargetView<R, T>)CombinedError> { ... }
    fn create_depth_stencil<T: DepthFormat + TextureFormat>(&mut self, width: Size, height: Size) -> Result<(Texture<R, T::Surface>, ShaderResourceView<R, T::View>, DepthStencilView<R, T>)CombinedError> { ... }
    fn create_depth_stencil_view_only<T: DepthFormat + TextureFormat>(&mut self, width: Size, height: Size) -> Result<DepthStencilView<R, T>, CombinedError> { ... }
}

Associated Types

type Mapper: Clone + Raw

Associated mapper type

Required Methods

fn get_capabilities(&self) -> &Capabilities

Returns the capabilities available to the specific API implementation

fn create_buffer_raw(&mut self, BufferInfo) -> Result<RawBuffer<R>, BufferError>

fn create_buffer_const_raw(&mut self, data: &[u8], stride: usize, BufferRole, Bind) -> Result<RawBuffer<R>, BufferError>

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

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

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

fn create_sampler(&mut self, SamplerInfo) -> Sampler<R>

fn map_buffer_raw(&mut self, &RawBuffer<R>, MapAccess) -> Self::Mapper

fn unmap_buffer_raw(&mut self, Self::Mapper)

fn map_buffer_readable<T: Copy>(&mut self, &Buffer<R, T>) -> Readable<T, R, Self> where Self: Sized

fn map_buffer_writable<T: Copy>(&mut self, &Buffer<R, T>) -> Writable<T, R, Self> where Self: Sized

fn map_buffer_rw<T: Copy>(&mut self, &Buffer<R, T>) -> RW<T, R, Self> where Self: Sized

fn create_texture_raw(&mut self, Descriptor, Option<ChannelType>, Option<&[&[u8]]>) -> Result<RawTexture<R>, Error>

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, ...

fn view_buffer_as_shader_resource_raw(&mut self, &RawBuffer<R>) -> Result<RawShaderResourceView<R>, ResourceViewError>

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

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

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

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

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

Provided Methods

fn create_buffer_const<T: Copy>(&mut self, data: &[T], role: BufferRole, bind: Bind) -> Result<Buffer<R, T>, BufferError>

fn create_buffer_dynamic<T>(&mut self, num: usize, role: BufferRole, bind: Bind) -> Result<Buffer<R, T>, BufferError>

fn create_buffer_staging<T>(&mut self, num: usize, role: BufferRole, bind: Bind, map: MapAccess) -> Result<Buffer<R, T>, BufferError>

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

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

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

fn create_texture<S>(&mut self, kind: Kind, levels: Level, bind: Bind, usage: Usage, channel_hint: Option<ChannelType>) -> Result<Texture<R, S>, Error> where S: SurfaceTyped

fn view_buffer_as_shader_resource<T>(&mut self, buf: &Buffer<R, T>) -> Result<ShaderResourceView<R, T>, ResourceViewError>

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

fn view_texture_as_shader_resource<T: TextureFormat>(&mut self, tex: &Texture<R, T::Surface>, levels: (Level, Level), swizzle: Swizzle) -> Result<ShaderResourceView<R, T::View>, ResourceViewError>

fn view_texture_as_unordered_access<T: TextureFormat>(&mut self, tex: &Texture<R, T::Surface>) -> Result<UnorderedAccessView<R, T::View>, ResourceViewError>

fn view_texture_as_render_target<T: RenderFormat>(&mut self, tex: &Texture<R, T::Surface>, level: Level, layer: Option<Layer>) -> Result<RenderTargetView<R, T>, TargetViewError>

fn view_texture_as_depth_stencil<T: DepthFormat>(&mut self, tex: &Texture<R, T::Surface>, level: Level, layer: Option<Layer>, flags: DepthStencilFlags) -> Result<DepthStencilView<R, T>, TargetViewError>

fn view_texture_as_depth_stencil_trivial<T: DepthFormat>(&mut self, tex: &Texture<R, T::Surface>) -> Result<DepthStencilView<R, T>, TargetViewError>

fn create_texture_const_u8<T: TextureFormat>(&mut self, kind: Kind, data: &[&[u8]]) -> Result<(Texture<R, T::Surface>, ShaderResourceView<R, T::View>)CombinedError>

fn create_texture_const<T: TextureFormat>(&mut self, kind: Kind, data: &[&[T::Surface::DataType]]) -> Result<(Texture<R, T::Surface>, ShaderResourceView<R, T::View>)CombinedError>

fn create_render_target<T: RenderFormat + TextureFormat>(&mut self, width: Size, height: Size) -> Result<(Texture<R, T::Surface>, ShaderResourceView<R, T::View>, RenderTargetView<R, T>)CombinedError>

fn create_depth_stencil<T: DepthFormat + TextureFormat>(&mut self, width: Size, height: Size) -> Result<(Texture<R, T::Surface>, ShaderResourceView<R, T::View>, DepthStencilView<R, T>)CombinedError>

fn create_depth_stencil_view_only<T: DepthFormat + TextureFormat>(&mut self, width: Size, height: Size) -> Result<DepthStencilView<R, T>, CombinedError>

Implementors