Skip to main content

Renderer

Struct Renderer 

Source
pub struct Renderer<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Renderer<'a>

Source

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.

Source

pub async fn new(window: Arc<Window>) -> Self

Source

pub fn camera(&self) -> &Camera

Source

pub fn camera_mut(&mut self) -> &mut Camera

Source

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).

Source

pub fn device(&self) -> &Device

Source

pub fn queue(&self) -> &Queue

Source

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.

Source

pub fn size(&self) -> PhysicalSize<u32>

Source

pub fn resize(&mut self, new_size: PhysicalSize<u32>)

Source

pub fn surface_format(&self) -> TextureFormat

Source

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.

Source

pub fn create_shader_module( &self, desc: &ShaderModuleDescriptor<'_>, ) -> ShaderModule

Source

pub fn create_render_pipeline( &self, desc: &RenderPipelineDescriptor<'_>, ) -> RenderPipeline

Source

pub fn create_buffer_init(&self, desc: &BufferInitDescriptor<'_>) -> Buffer

Source

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> 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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<T> Downcast for T
where T: 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.
§

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.
§

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.
§

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.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

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

§

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

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.

§

impl<T> Instrument for T

§

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

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

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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