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: BackendCapabilitiesImplementations§
Source§impl MultiBackendRenderer
impl MultiBackendRenderer
pub fn new( backend: Box<dyn BackendContext>, capabilities: BackendCapabilities, ) -> Self
Sourcepub fn from_existing_pipeline(_pipeline: &()) -> Self
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.
Sourcepub fn begin_frame(&mut self)
pub fn begin_frame(&mut self)
Begin recording a new frame.
Sourcepub fn frame_count(&self) -> u64
pub fn frame_count(&self) -> u64
Number of frames completed so far.
Sourcepub fn draw(&mut self, _pass: &RenderPass, calls: &[DrawCall])
pub fn draw(&mut self, _pass: &RenderPass, calls: &[DrawCall])
Execute a series of draw calls within a render pass.
Sourcepub fn dispatch_compute(
&mut self,
pipeline: ComputePipelineHandle,
workgroups: [u32; 3],
buffers: &[BufferHandle],
)
pub fn dispatch_compute( &mut self, pipeline: ComputePipelineHandle, workgroups: [u32; 3], buffers: &[BufferHandle], )
Dispatch a compute shader.
Sourcepub fn read_buffer(&self, buffer: BufferHandle) -> Vec<u8> ⓘ
pub fn read_buffer(&self, buffer: BufferHandle) -> Vec<u8> ⓘ
Read data back from a GPU buffer.
Sourcepub fn upload_buffer(&mut self, buffer: BufferHandle, data: &[u8])
pub fn upload_buffer(&mut self, buffer: BufferHandle, data: &[u8])
Upload raw bytes to a GPU buffer.
Sourcepub fn upload_texture(&mut self, texture: TextureHandle, data: &[u8])
pub fn upload_texture(&mut self, texture: TextureHandle, data: &[u8])
Upload raw pixel data to a texture.
Sourcepub fn create_vertex_buffer(&mut self, data: &[u8]) -> BufferHandle
pub fn create_vertex_buffer(&mut self, data: &[u8]) -> BufferHandle
Create a vertex buffer and fill it with the given data.
Sourcepub fn create_index_buffer(&mut self, data: &[u8]) -> BufferHandle
pub fn create_index_buffer(&mut self, data: &[u8]) -> BufferHandle
Create an index buffer and fill it.
Sourcepub fn create_uniform_buffer(&mut self, data: &[u8]) -> BufferHandle
pub fn create_uniform_buffer(&mut self, data: &[u8]) -> BufferHandle
Create a uniform buffer and fill it.
Sourcepub fn create_storage_buffer(&mut self, size: usize) -> BufferHandle
pub fn create_storage_buffer(&mut self, size: usize) -> BufferHandle
Create a storage buffer.
Sourcepub fn create_color_texture(&mut self, w: u32, h: u32) -> TextureHandle
pub fn create_color_texture(&mut self, w: u32, h: u32) -> TextureHandle
Create a colour texture.
Sourcepub fn create_depth_texture(&mut self, w: u32, h: u32) -> TextureHandle
pub fn create_depth_texture(&mut self, w: u32, h: u32) -> TextureHandle
Create a depth texture.
Sourcepub fn destroy_buffer(&mut self, buf: BufferHandle)
pub fn destroy_buffer(&mut self, buf: BufferHandle)
Destroy a buffer.
Sourcepub fn destroy_texture(&mut self, tex: TextureHandle)
pub fn destroy_texture(&mut self, tex: TextureHandle)
Destroy a texture.
Sourcepub fn backend_name(&self) -> &str
pub fn backend_name(&self) -> &str
Backend name.
Auto Trait Implementations§
impl Freeze for MultiBackendRenderer
impl !RefUnwindSafe for MultiBackendRenderer
impl Send for MultiBackendRenderer
impl Sync for MultiBackendRenderer
impl Unpin for MultiBackendRenderer
impl UnsafeUnpin for MultiBackendRenderer
impl !UnwindSafe for MultiBackendRenderer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
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>
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)
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)
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.