logo

Trait luminance::backend::texture::Texture[][src]

pub unsafe trait Texture<D, P>: TextureBase where
    D: Dimensionable,
    P: Pixel
{ unsafe fn new_texture(
        &mut self,
        size: D::Size,
        sampler: Sampler,
        texels: TexelUpload<'_, [P::Encoding]>
    ) -> Result<Self::TextureRepr, TextureError>;
unsafe fn new_texture_raw(
        &mut self,
        size: D::Size,
        sampler: Sampler,
        texels: TexelUpload<'_, [P::RawEncoding]>
    ) -> Result<Self::TextureRepr, TextureError>;
unsafe fn mipmaps(texture: &Self::TextureRepr) -> usize;
unsafe fn upload_part(
        texture: &mut Self::TextureRepr,
        offset: D::Offset,
        size: D::Size,
        texels: TexelUpload<'_, [P::Encoding]>
    ) -> Result<(), TextureError>;
unsafe fn upload(
        texture: &mut Self::TextureRepr,
        size: D::Size,
        texels: TexelUpload<'_, [P::Encoding]>
    ) -> Result<(), TextureError>;
unsafe fn upload_part_raw(
        texture: &mut Self::TextureRepr,
        offset: D::Offset,
        size: D::Size,
        texels: TexelUpload<'_, [P::RawEncoding]>
    ) -> Result<(), TextureError>;
unsafe fn upload_raw(
        texture: &mut Self::TextureRepr,
        size: D::Size,
        texels: TexelUpload<'_, [P::RawEncoding]>
    ) -> Result<(), TextureError>;
unsafe fn get_raw_texels(
        texture: &Self::TextureRepr,
        size: D::Size
    ) -> Result<Vec<P::RawEncoding>, TextureError>
    where
        P::RawEncoding: Copy + Default
;
unsafe fn resize(
        texture: &mut Self::TextureRepr,
        size: D::Size,
        texel: TexelUpload<'_, [P::Encoding]>
    ) -> Result<(), TextureError>;
unsafe fn resize_raw(
        texture: &mut Self::TextureRepr,
        size: D::Size,
        texel: TexelUpload<'_, [P::RawEncoding]>
    ) -> Result<(), TextureError>; }
Expand description

Texture interface.

Implementing this trait requires implementing TextureBase.

D is the dimension of the texture, and must then implement Dimensionable. P is the format of the carried pixels and must then implement Pixel.

Required methods

Create a new texture.

Create a new texture from raw texels.

Get the number of mimaps associated with the texture.

Upload texels to a part of a texture.

This method will use the input texels and will copy them everywhere in the part formed with offset and size. For instance, for 2D textures, offset and size form a rectangle: that rectangle of pixels will be filled with the provided input texels.

Upload texels to a whole texture.

This method is similar to Texture::upload_part but instead of uploading a part of it, it will upload to the whole texture at once. The size will match the size of the texture so you do not have to cache it and simply can use the input size value.

Upload texels to a part of a texture.

This method will use the input texels and will copy them everywhere in the part formed with offset and size. For instance, for 2D textures, offset and size form a rectangle: that rectangle of pixels will be filled with the provided input texels.

This is very similar to Texture::upload_part_raw, but the key difference is that this method works with the raw encoding of the texels, which is often the case with crates that provide you with a contiguous array of raw data instead of rich texels.

Upload texels to a whole texture.

This method is similar to Texture::upload_part but instead of uploading a part of it, it will upload to the whole texture at once. The size will match the size of the texture so you do not have to cache it and simply can use the input size value.

This is very similar to Texture::upload, but the key difference is that this method works with the raw encoding of the texels, which is often the case with crates that provide you with a contiguous array of raw data instead of rich texels.

Get a copy of the raw texels stored in the texture.

size will match the actual size of the texture, you do not need to cache it.

Resize the texture.

Once the texture is resized, pixels are left in an unknown state. Depending on the implementation of the backend, it is likely that texels will either be old ones, or completely random data.

Resize the texture with raw texels.

Once the texture is resized, pixels are left in an unknown state. Depending on the implementation of the backend, it is likely that texels will either be old ones, or completely random data.

Implementors