[][src]Struct wgpu::RenderBundleEncoder

pub struct RenderBundleEncoder<'a> { /* fields omitted */ }

Encodes a series of GPU operations into a reusable "render bundle".

It only supports a handful of render commands, but it makes them reusable. [RenderBundle]s can be executed onto a [CommandEncoder] using [RenderPass::execute_bundles].

Executing a [RenderBundle] is often more efficient then issuing the underlying commands manually.

Methods

impl<'a> RenderBundleEncoder<'a>[src]

pub fn finish(self, desc: &RenderBundleDescriptor) -> RenderBundle[src]

Finishes recording and returns a [RenderBundle] that can be executed in other render passes.

pub fn set_bind_group(
    &mut self,
    index: u32,
    bind_group: &'a BindGroup,
    offsets: &[DynamicOffset]
)
[src]

Sets the active bind group for a given bind group index. The bind group layout in the active pipeline when any draw() function is called must match the layout of this bind group.

If the bind group have dynamic offsets, provide them in order of their declaration.

pub fn set_pipeline(&mut self, pipeline: &'a RenderPipeline)[src]

Sets the active render pipeline.

Subsequent draw calls will exhibit the behavior defined by pipeline.

pub fn set_index_buffer(&mut self, buffer_slice: BufferSlice<'a>)[src]

Sets the active index buffer.

Subsequent calls to draw_indexed on this [RenderBundleEncoder] will use buffer as the source index buffer.

pub fn set_vertex_buffer(&mut self, slot: u32, buffer_slice: BufferSlice<'a>)[src]

Assign a vertex buffer to a slot.

Subsequent calls to draw and draw_indexed on this [RenderBundleEncoder] will use buffer as one of the source vertex buffers.

The slot refers to the index of the matching descriptor in [VertexStateDescriptor::vertex_buffers].

pub fn draw(&mut self, vertices: Range<u32>, instances: Range<u32>)[src]

Draws primitives from the active vertex buffer(s).

The active vertex buffers can be set with [RenderBundleEncoder::set_vertex_buffer].

pub fn draw_indexed(
    &mut self,
    indices: Range<u32>,
    base_vertex: i32,
    instances: Range<u32>
)
[src]

Draws indexed primitives using the active index buffer and the active vertex buffers.

The active index buffer can be set with [RenderBundleEncoder::set_index_buffer], while the active vertex buffers can be set with [RenderBundleEncoder::set_vertex_buffer].

pub fn draw_indirect(
    &mut self,
    indirect_buffer: &'a Buffer,
    indirect_offset: BufferAddress
)
[src]

Draws primitives from the active vertex buffer(s) based on the contents of the indirect_buffer.

The active vertex buffers can be set with [RenderBundleEncoder::set_vertex_buffer].

The structure expected in indirect_buffer is the following:

#[repr(C)]
struct DrawIndirect {
    vertex_count: u32, // The number of vertices to draw.
    instance_count: u32, // The number of instances to draw.
    base_vertex: u32, // The Index of the first vertex to draw.
    base_instance: u32, // The instance ID of the first instance to draw.
}

pub fn draw_indexed_indirect(
    &mut self,
    indirect_buffer: &'a Buffer,
    indirect_offset: BufferAddress
)
[src]

Draws indexed primitives using the active index buffer and the active vertex buffers, based on the contents of the indirect_buffer.

The active index buffer can be set with [RenderBundleEncoder::set_index_buffer], while the active vertex buffers can be set with [RenderBundleEncoder::set_vertex_buffer].

The structure expected in indirect_buffer is the following:

#[repr(C)]
struct DrawIndexedIndirect {
    vertex_count: u32, // The number of vertices to draw.
    instance_count: u32, // The number of instances to draw.
    base_index: u32, // The base index within the index buffer.
    vertex_offset: i32, // The value added to the vertex index before indexing into the vertex buffer.
    base_instance: u32, // The instance ID of the first instance to draw.
}

Auto Trait Implementations

impl<'a> !RefUnwindSafe for RenderBundleEncoder<'a>

impl<'a> !Send for RenderBundleEncoder<'a>

impl<'a> !Sync for RenderBundleEncoder<'a>

impl<'a> Unpin for RenderBundleEncoder<'a>

impl<'a> !UnwindSafe for RenderBundleEncoder<'a>

Blanket Implementations

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

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

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

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.