pub struct Renderer<'a> { /* private fields */ }Implementations§
Source§impl<'a> Renderer<'a>
impl<'a> Renderer<'a>
Sourcepub const DEPTH_FORMAT: TextureFormat = TextureFormat::Depth32Float
pub const DEPTH_FORMAT: TextureFormat = TextureFormat::Depth32Float
Format of the depth buffer attached to the main render pass. Pipelines created through
Renderer::create_render_pipeline must use this format if they specify a depth state.
pub async fn new(window: Arc<Window>) -> Self
pub fn camera(&self) -> &Camera
pub fn camera_mut(&mut self) -> &mut Camera
Sourcepub fn window(&self) -> Arc<Window>
pub fn window(&self) -> Arc<Window>
The window this renderer’s surface was created from, as a cheap Arc clone. Useful for
consumers that need to integrate other window-aware systems (e.g. egui-winit) and cache
the handle for later (e.g. in a Scene::on_window_event, which isn’t handed the renderer).
pub fn device(&self) -> &Device
pub fn queue(&self) -> &Queue
Sourcepub fn wgpu_surface_format(&self) -> TextureFormat
pub fn wgpu_surface_format(&self) -> TextureFormat
The raw wgpu format of the render surface, e.g. for configuring a third-party renderer
(like egui-wgpu) that needs to target the same surface. See also Renderer::surface_format
for the crate’s own wrapper type.
pub fn size(&self) -> PhysicalSize<u32>
pub fn resize(&mut self, new_size: PhysicalSize<u32>)
pub fn surface_format(&self) -> TextureFormat
Sourcepub fn render<T>(
&mut self,
clear_color: Color,
context: &mut T,
draw_fn: impl FnOnce(&mut T, &mut DrawPass<'_>),
overlay_fn: impl FnOnce(&mut T, &Device, &Queue, &mut CommandEncoder, &TextureView),
post_overlay_fn: impl FnOnce(&mut T, &mut DrawPass<'_>),
)
pub fn render<T>( &mut self, clear_color: Color, context: &mut T, draw_fn: impl FnOnce(&mut T, &mut DrawPass<'_>), overlay_fn: impl FnOnce(&mut T, &Device, &Queue, &mut CommandEncoder, &TextureView), post_overlay_fn: impl FnOnce(&mut T, &mut DrawPass<'_>), )
Renders one frame: a main pass (color + depth, cleared), an overlay pass (color only, loaded not cleared, no depth test, e.g. egui), then a post-overlay pass (same as the overlay pass but drawn after it, e.g. a custom titlebar that must stay on top of an egui-based editor UI) — all on the same target before it’s submitted and presented.
context is threaded through to all three closures as an explicit parameter, rather than
captured from the caller’s environment, so the FnOnces can both reference the same
mutable state (e.g. a SceneManager) without the borrow checker seeing two simultaneous
unique borrows of it — they run one after another, but as closure values they’d
otherwise need to exist at the same time as arguments to this call.
pub fn create_shader_module( &self, desc: &ShaderModuleDescriptor<'_>, ) -> ShaderModule
pub fn create_render_pipeline( &self, desc: &RenderPipelineDescriptor<'_>, ) -> RenderPipeline
pub fn create_buffer_init(&self, desc: &BufferInitDescriptor<'_>) -> Buffer
pub fn create_buffer(&self, desc: &BufferDescriptor<'_>) -> Buffer
Auto Trait Implementations§
impl<'a> !Freeze for Renderer<'a>
impl<'a> !RefUnwindSafe for Renderer<'a>
impl<'a> !UnwindSafe for Renderer<'a>
impl<'a> Send for Renderer<'a>
impl<'a> Sync for Renderer<'a>
impl<'a> Unpin for Renderer<'a>
impl<'a> UnsafeUnpin for Renderer<'a>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more