[][src]Struct nannou::vk::image::attachment::AttachmentImage

pub struct AttachmentImage<F = Format, A = PotentialDedicatedAllocation<StdMemoryPoolAlloc>> { /* fields omitted */ }

ImageAccess whose purpose is to be used as a framebuffer attachment.

The image is always two-dimensional and has only one mipmap, but it can have any kind of format. Trying to use a format that the backend doesn't support for rendering will result in an error being returned when creating the image. Once you have an AttachmentImage, you are guaranteed that you will be able to draw on it.

The template parameter of AttachmentImage is a type that describes the format of the image.

Regular vs transient

Calling AttachmentImage::new will create a regular image, while calling AttachmentImage::transient will create a transient image. Transient image are only relevant for images that serve as attachments, so AttachmentImage is the only type of image in vulkano that provides a shortcut for this.

A transient image is a special kind of image whose content is undefined outside of render passes. Once you finish drawing, reading from it will returned undefined data (which can be either valid or garbage, depending on the implementation).

This gives a hint to the Vulkan implementation that it is possible for the image's content to live exclusively in some cache memory, and that no real memory has to be allocated for it.

In other words, if you are going to read from the image after drawing to it, use a regular image. If you don't need to read from it (for example if it's some kind of intermediary color, or a depth buffer that is only used once) then use a transient image as it may improve performance.

Methods

impl<F> AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>[src]

pub fn new(
    device: Arc<Device>,
    dimensions: [u32; 2],
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Creates a new image with the given dimensions and format.

Returns an error if the dimensions are too large or if the backend doesn't support this format as a framebuffer attachment.

pub fn input_attachment(
    device: Arc<Device>,
    dimensions: [u32; 2],
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as new, but creates an image that can be used as an input attachment.

Note: This function is just a convenient shortcut for with_usage.

pub fn multisampled(
    device: Arc<Device>,
    dimensions: [u32; 2],
    samples: u32,
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as new, but creates a multisampled image.

Note: You can also use this function and pass 1 for the number of samples if you want a regular image.

pub fn multisampled_input_attachment(
    device: Arc<Device>,
    dimensions: [u32; 2],
    samples: u32,
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as multisampled, but creates an image that can be used as an input attachment.

Note: This function is just a convenient shortcut for multisampled_with_usage.

pub fn with_usage(
    device: Arc<Device>,
    dimensions: [u32; 2],
    format: F,
    usage: ImageUsage
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as new, but lets you specify additional usages.

The color_attachment or depth_stencil_attachment usages are automatically added based on the format of the usage. Therefore the usage parameter allows you specify usages in addition to these two.

pub fn multisampled_with_usage(
    device: Arc<Device>,
    dimensions: [u32; 2],
    samples: u32,
    format: F,
    usage: ImageUsage
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as with_usage, but creates a multisampled image.

Note: You can also use this function and pass 1 for the number of samples if you want a regular image.

Note: This function is just a convenient shortcut for multisampled_with_usage.

pub fn sampled(
    device: Arc<Device>,
    dimensions: [u32; 2],
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as new, except that the image can later be sampled.

Note: This function is just a convenient shortcut for with_usage.

pub fn sampled_input_attachment(
    device: Arc<Device>,
    dimensions: [u32; 2],
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as sampled, except that the image can be used as an input attachment.

Note: This function is just a convenient shortcut for with_usage.

pub fn sampled_multisampled(
    device: Arc<Device>,
    dimensions: [u32; 2],
    samples: u32,
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as sampled, but creates a multisampled image.

Note: You can also use this function and pass 1 for the number of samples if you want a regular image.

Note: This function is just a convenient shortcut for multisampled_with_usage.

pub fn sampled_multisampled_input_attachment(
    device: Arc<Device>,
    dimensions: [u32; 2],
    samples: u32,
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as sampled_multisampled, but creates an image that can be used as an input attachment.

Note: This function is just a convenient shortcut for multisampled_with_usage.

pub fn transient(
    device: Arc<Device>,
    dimensions: [u32; 2],
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as new, except that the image will be transient.

A transient image is special because its content is undefined outside of a render pass. This means that the implementation has the possibility to not allocate any memory for it.

Note: This function is just a convenient shortcut for with_usage.

pub fn transient_input_attachment(
    device: Arc<Device>,
    dimensions: [u32; 2],
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as transient, except that the image can be used as an input attachment.

Note: This function is just a convenient shortcut for with_usage.

pub fn transient_multisampled(
    device: Arc<Device>,
    dimensions: [u32; 2],
    samples: u32,
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as transient, but creates a multisampled image.

Note: You can also use this function and pass 1 for the number of samples if you want a regular image.

Note: This function is just a convenient shortcut for multisampled_with_usage.

pub fn transient_multisampled_input_attachment(
    device: Arc<Device>,
    dimensions: [u32; 2],
    samples: u32,
    format: F
) -> Result<Arc<AttachmentImage<F, PotentialDedicatedAllocation<StdMemoryPoolAlloc>>>, ImageCreationError> where
    F: FormatDesc
[src]

Same as transient_multisampled, but creates an image that can be used as an input attachment.

Note: This function is just a convenient shortcut for multisampled_with_usage.

impl<F, A> AttachmentImage<F, A>[src]

pub fn dimensions(&self) -> [u32; 2][src]

Returns the dimensions of the image.

Trait Implementations

impl<F, A> ImageViewAccess for AttachmentImage<F, A> where
    F: 'static + Send + Sync
[src]

fn format(&self) -> Format[src]

Returns the format of this view. This can be different from the parent's format.

fn samples(&self) -> u32[src]

fn can_be_sampled(&self, _sampler: &Sampler) -> bool[src]

Returns true if the given sampler can be used with this image view. Read more

impl<F, A> ImageAccess for AttachmentImage<F, A> where
    F: 'static + Send + Sync
[src]

fn format(&self) -> Format[src]

Returns the format of this image.

fn has_color(&self) -> bool[src]

Returns true if the image is a color image.

fn has_depth(&self) -> bool[src]

Returns true if the image has a depth component. In other words, if it is a depth or a depth-stencil format. Read more

fn has_stencil(&self) -> bool[src]

Returns true if the image has a stencil component. In other words, if it is a stencil or a depth-stencil format. Read more

fn mipmap_levels(&self) -> u32[src]

Returns the number of mipmap levels of this image.

fn samples(&self) -> u32[src]

Returns the number of samples of this image.

fn dimensions(&self) -> ImageDimensions[src]

Returns the dimensions of the image.

fn supports_blit_source(&self) -> bool[src]

Returns true if the image can be used as a source for blits.

fn supports_blit_destination(&self) -> bool[src]

Returns true if the image can be used as a destination for blits.

unsafe fn preinitialized_layout(&self) -> bool[src]

unsafe fn forced_undefined_initial_layout(
    self,
    preinitialized: bool
) -> ImageAccessFromUndefinedLayout<Self>
[src]

Wraps around this ImageAccess and returns an identical ImageAccess but whose initial layout requirement is either Undefined or Preinitialized. Read more

impl<F, A> Debug for AttachmentImage<F, A> where
    A: Debug,
    F: Debug
[src]

Auto Trait Implementations

impl<F, A> Send for AttachmentImage<F, A> where
    A: Send,
    F: Send

impl<F, A> Sync for AttachmentImage<F, A> where
    A: Sync,
    F: Sync

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> ImageAccess for T where
    T: SafeDeref,
    <T as Deref>::Target: ImageAccess
[src]

fn format(&self) -> Format[src]

Returns the format of this image.

fn has_color(&self) -> bool[src]

Returns true if the image is a color image.

fn has_depth(&self) -> bool[src]

Returns true if the image has a depth component. In other words, if it is a depth or a depth-stencil format. Read more

fn has_stencil(&self) -> bool[src]

Returns true if the image has a stencil component. In other words, if it is a stencil or a depth-stencil format. Read more

fn mipmap_levels(&self) -> u32[src]

Returns the number of mipmap levels of this image.

fn samples(&self) -> u32[src]

Returns the number of samples of this image.

fn dimensions(&self) -> ImageDimensions[src]

Returns the dimensions of the image.

fn supports_blit_source(&self) -> bool[src]

Returns true if the image can be used as a source for blits.

fn supports_blit_destination(&self) -> bool[src]

Returns true if the image can be used as a destination for blits.

unsafe fn preinitialized_layout(&self) -> bool[src]

unsafe fn forced_undefined_initial_layout(
    self,
    preinitialized: bool
) -> ImageAccessFromUndefinedLayout<Self>
[src]

Wraps around this ImageAccess and returns an identical ImageAccess but whose initial layout requirement is either Undefined or Preinitialized. Read more

impl<T> Content for T[src]

impl<T> ImageViewAccess for T where
    T: SafeDeref,
    <T as Deref>::Target: ImageViewAccess
[src]

fn format(&self) -> Format[src]

Returns the format of this view. This can be different from the parent's format.

fn samples(&self) -> u32[src]

impl<T> SafeBorrow<T> for T[src]

impl<T> Erased for T

impl<S> FromSample<S> for S[src]

impl<T, U> ToSample<U> for T where
    U: FromSample<T>, 
[src]

impl<S, T> Duplex<S> for T where
    T: FromSample<S> + ToSample<S>, 
[src]

impl<T> SetParameter for T

fn set<T>(&mut self, value: T) -> <T as Parameter<Self>>::Result where
    T: Parameter<Self>, 

Sets value as a parameter of self.

impl<T> SetParameter for T

fn set<T>(&mut self, value: T) -> <T as Parameter<Self>>::Result where
    T: Parameter<Self>, 

Sets value as a parameter of self.