[][src]Struct nannou::vk::Framebuffer

pub struct Framebuffer<Rp, A> { /* fields omitted */ }

Contains a render pass and the image views that are attached to it.

Creating a framebuffer is done by calling Framebuffer::start, which returns a FramebufferBuilder object. You can then add the framebuffer attachments one by one by calling add(image). When you are done, call build().

Both the add and the build functions perform various checks to make sure that the number of images is correct and that each image is compatible with the attachment definition in the render pass.

use vulkano::framebuffer::Framebuffer;

// let render_pass: Arc<_> = ...;
let framebuffer = Framebuffer::start(render_pass.clone())
    .add(my_image).unwrap()
    .build().unwrap();

Just like render pass objects implement the RenderPassAbstract trait, all framebuffer objects implement the FramebufferAbstract trait. This means that you can cast any Arc<Framebuffer<..>> into an Arc<FramebufferAbstract + Send + Sync> for easier storage.

Framebuffer dimensions

If you use Framebuffer::start() to create a framebuffer then vulkano will automatically make sure that all the attachments have the same dimensions, as this is the most common situation.

Alternatively you can also use with_intersecting_dimensions, in which case the dimensions of the framebuffer will be the intersection of the dimensions of all attachments, or with_dimensions if you want to specify exact dimensions. If you use with_dimensions, you are allowed to attach images that are larger than these dimensions.

If the dimensions of the framebuffer don't match the dimensions of one of its attachment, then only the top-left hand corner of the image will be drawn to.

Methods

impl<Rp> Framebuffer<Rp, ()>[src]

pub fn start(render_pass: Rp) -> FramebufferBuilder<Rp, ()>[src]

Starts building a framebuffer.

pub fn with_intersecting_dimensions(
    render_pass: Rp
) -> FramebufferBuilder<Rp, ()>
[src]

Starts building a framebuffer. The dimensions of the framebuffer will automatically be the intersection of the dimensions of all the attachments.

pub fn with_dimensions(
    render_pass: Rp,
    dimensions: [u32; 3]
) -> FramebufferBuilder<Rp, ()>
[src]

Starts building a framebuffer.

impl<Rp, A> Framebuffer<Rp, A>[src]

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

Returns the width, height and layers of this framebuffer.

pub fn width(&self) -> u32[src]

Returns the width of the framebuffer in pixels.

pub fn height(&self) -> u32[src]

Returns the height of the framebuffer in pixels.

pub fn layers(&self) -> u32[src]

Returns the number of layers (or depth) of the framebuffer.

pub fn device(&self) -> &Arc<Device>[src]

Returns the device that was used to create this framebuffer.

pub fn render_pass(&self) -> &Rp[src]

Returns the renderpass that was used to create this framebuffer.

Trait Implementations

impl<Rp, A> DeviceOwned for Framebuffer<Rp, A>[src]

impl<Rp, A> RenderPassDesc for Framebuffer<Rp, A> where
    Rp: RenderPassDesc
[src]

Important traits for RenderPassDescAttachments<'a, R>
fn attachment_descs(&self) -> RenderPassDescAttachments<Self>[src]

Returns an iterator to the list of attachments.

Important traits for RenderPassDescSubpasses<'a, R>
fn subpass_descs(&self) -> RenderPassDescSubpasses<Self>[src]

Returns an iterator to the list of subpasses.

Important traits for RenderPassDescDependencies<'a, R>
fn dependency_descs(&self) -> RenderPassDescDependencies<Self>[src]

Returns an iterator to the list of dependencies.

fn is_compatible_with<T>(&self, other: &T) -> bool where
    T: RenderPassDesc + ?Sized
[src]

Returns true if this render pass is compatible with another render pass. Read more

fn build_render_pass(
    self,
    device: Arc<Device>
) -> Result<RenderPass<Self>, RenderPassCreationError>
[src]

Builds a render pass from this description. Read more

fn num_color_attachments(&self, subpass: u32) -> Option<u32>[src]

Returns the number of color attachments of a subpass. Returns None if out of range.

fn num_samples(&self, subpass: u32) -> Option<u32>[src]

Returns the number of samples of the attachments of a subpass. Returns None if out of range or if the subpass has no attachment. TODO: return an enum instead? Read more

fn has_depth_stencil_attachment(&self, subpass: u32) -> Option<(bool, bool)>[src]

Returns a tuple whose first element is true if there's a depth attachment, and whose second element is true if there's a stencil attachment. Returns None if out of range. Read more

fn has_depth(&self, subpass: u32) -> Option<bool>[src]

Returns true if a subpass has a depth attachment or a depth-stencil attachment.

fn has_writable_depth(&self, subpass: u32) -> Option<bool>[src]

Returns true if a subpass has a depth attachment or a depth-stencil attachment whose layout is not DepthStencilReadOnlyOptimal. Read more

fn has_stencil(&self, subpass: u32) -> Option<bool>[src]

Returns true if a subpass has a stencil attachment or a depth-stencil attachment.

fn has_writable_stencil(&self, subpass: u32) -> Option<bool>[src]

Returns true if a subpass has a stencil attachment or a depth-stencil attachment whose layout is not DepthStencilReadOnlyOptimal. Read more

impl<Rp, A> FramebufferAbstract for Framebuffer<Rp, A> where
    A: AttachmentsList,
    Rp: RenderPassAbstract
[src]

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

Returns the width of the framebuffer in pixels.

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

Returns the height of the framebuffer in pixels.

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

Returns the number of layers (or depth) of the framebuffer.

impl<Rp, A> Drop for Framebuffer<Rp, A>[src]

impl<C, Rp, A> RenderPassDescClearValues<C> for Framebuffer<Rp, A> where
    Rp: RenderPassDescClearValues<C>, 
[src]

impl<Rp, A> RenderPassAbstract for Framebuffer<Rp, A> where
    Rp: RenderPassAbstract
[src]

impl<Rp, A> Debug for Framebuffer<Rp, A> where
    A: Debug,
    Rp: Debug
[src]

Auto Trait Implementations

impl<Rp, A> Send for Framebuffer<Rp, A> where
    A: Send,
    Rp: Send

impl<Rp, A> Sync for Framebuffer<Rp, A> where
    A: Sync,
    Rp: 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> DeviceOwned for T where
    T: Deref,
    <T as Deref>::Target: DeviceOwned
[src]

impl<T> Content for T[src]

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

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

Returns the width of the framebuffer in pixels.

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

Returns the height of the framebuffer in pixels.

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

Returns the number of layers (or depth) of the framebuffer.

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

impl<A, B> RenderPassCompatible<B> for A where
    A: RenderPassDesc + ?Sized,
    B: RenderPassDesc + ?Sized
[src]

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

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

Important traits for RenderPassDescAttachments<'a, R>
fn attachment_descs(&self) -> RenderPassDescAttachments<Self>[src]

Returns an iterator to the list of attachments.

Important traits for RenderPassDescSubpasses<'a, R>
fn subpass_descs(&self) -> RenderPassDescSubpasses<Self>[src]

Returns an iterator to the list of subpasses.

Important traits for RenderPassDescDependencies<'a, R>
fn dependency_descs(&self) -> RenderPassDescDependencies<Self>[src]

Returns an iterator to the list of dependencies.

fn is_compatible_with<T>(&self, other: &T) -> bool where
    T: RenderPassDesc + ?Sized
[src]

Returns true if this render pass is compatible with another render pass. Read more

fn build_render_pass(
    self,
    device: Arc<Device>
) -> Result<RenderPass<Self>, RenderPassCreationError>
[src]

Builds a render pass from this description. Read more

fn num_color_attachments(&self, subpass: u32) -> Option<u32>[src]

Returns the number of color attachments of a subpass. Returns None if out of range.

fn num_samples(&self, subpass: u32) -> Option<u32>[src]

Returns the number of samples of the attachments of a subpass. Returns None if out of range or if the subpass has no attachment. TODO: return an enum instead? Read more

fn has_depth_stencil_attachment(&self, subpass: u32) -> Option<(bool, bool)>[src]

Returns a tuple whose first element is true if there's a depth attachment, and whose second element is true if there's a stencil attachment. Returns None if out of range. Read more

fn has_depth(&self, subpass: u32) -> Option<bool>[src]

Returns true if a subpass has a depth attachment or a depth-stencil attachment.

fn has_writable_depth(&self, subpass: u32) -> Option<bool>[src]

Returns true if a subpass has a depth attachment or a depth-stencil attachment whose layout is not DepthStencilReadOnlyOptimal. Read more

fn has_stencil(&self, subpass: u32) -> Option<bool>[src]

Returns true if a subpass has a stencil attachment or a depth-stencil attachment.

fn has_writable_stencil(&self, subpass: u32) -> Option<bool>[src]

Returns true if a subpass has a stencil attachment or a depth-stencil attachment whose layout is not DepthStencilReadOnlyOptimal. Read more

impl<A, B> RenderPassSubpassInterface<B> for A where
    A: RenderPassDesc,
    B: ShaderInterfaceDef + ?Sized
[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.