Skip to main content

MultiBackendRenderer

Struct MultiBackendRenderer 

Source
pub struct MultiBackendRenderer {
    pub backend: Box<dyn BackendContext>,
    pub capabilities: BackendCapabilities,
    /* private fields */
}
Expand description

The main renderer that dispatches draw calls and compute through a BackendContext.

Fields§

§backend: Box<dyn BackendContext>§capabilities: BackendCapabilities

Implementations§

Source§

impl MultiBackendRenderer

Source

pub fn new( backend: Box<dyn BackendContext>, capabilities: BackendCapabilities, ) -> Self

Source

pub fn software() -> Self

Create a renderer backed by the software context.

Source

pub fn from_existing_pipeline(_pipeline: &()) -> Self

Build a renderer from an existing pipeline’s backend selection. In practice this would inspect the live Pipeline; here we default to Software.

Source

pub fn begin_frame(&mut self)

Begin recording a new frame.

Source

pub fn end_frame(&mut self)

Finish recording and submit all commands.

Source

pub fn present(&mut self)

Present the current frame to the display.

Source

pub fn frame_count(&self) -> u64

Number of frames completed so far.

Source

pub fn draw(&mut self, _pass: &RenderPass, calls: &[DrawCall])

Execute a series of draw calls within a render pass.

Source

pub fn dispatch_compute( &mut self, pipeline: ComputePipelineHandle, workgroups: [u32; 3], buffers: &[BufferHandle], )

Dispatch a compute shader.

Source

pub fn read_buffer(&self, buffer: BufferHandle) -> Vec<u8>

Read data back from a GPU buffer.

Source

pub fn upload_buffer(&mut self, buffer: BufferHandle, data: &[u8])

Upload raw bytes to a GPU buffer.

Source

pub fn upload_texture(&mut self, texture: TextureHandle, data: &[u8])

Upload raw pixel data to a texture.

Source

pub fn create_vertex_buffer(&mut self, data: &[u8]) -> BufferHandle

Create a vertex buffer and fill it with the given data.

Source

pub fn create_index_buffer(&mut self, data: &[u8]) -> BufferHandle

Create an index buffer and fill it.

Source

pub fn create_uniform_buffer(&mut self, data: &[u8]) -> BufferHandle

Create a uniform buffer and fill it.

Source

pub fn create_storage_buffer(&mut self, size: usize) -> BufferHandle

Create a storage buffer.

Source

pub fn create_color_texture(&mut self, w: u32, h: u32) -> TextureHandle

Create a colour texture.

Source

pub fn create_depth_texture(&mut self, w: u32, h: u32) -> TextureHandle

Create a depth texture.

Source

pub fn destroy_buffer(&mut self, buf: BufferHandle)

Destroy a buffer.

Source

pub fn destroy_texture(&mut self, tex: TextureHandle)

Destroy a texture.

Source

pub fn backend_name(&self) -> &str

Backend name.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<S> FromSample<S> for S

Source§

fn from_sample_(s: S) -> S

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> ToSample<U> for T
where U: FromSample<T>,

Source§

fn to_sample_(self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

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