Skip to main content

Renderer

Struct Renderer 

Source
pub struct Renderer { /* private fields */ }
Expand description

GPU renderer that draws a RenderFrame using seven shader pipelines.

Implementations§

Source§

impl Renderer

Source

pub fn new(device: Device, queue: Queue, surface_format: TextureFormat) -> Self

Create a new renderer from an existing wgpu device and queue. It installs the device’s lost-device latch: a device shared by several renderers opens one latch where it is opened and builds each renderer with with_device_health.

Source

pub fn with_device_health( device: Device, queue: Queue, surface_format: TextureFormat, health: DeviceHealth, ) -> Self

new, on a device whose lost-device latch health is, installed once where the device was opened. Renderers built with one latch and drawn on one thread share their live pictures’ uploads: one whose texture lacks a commit another already holds copies that texture on the device rather than upload the frame again.

Source

pub fn upload_atlas(&mut self, width: u32, height: u32, pixels: &[u8])

Upload atlas texture data from the text backend.

Source

pub fn render( &mut self, frame: &RenderFrame, view: &TextureView, scale_factor: f32, viewport_width: u32, viewport_height: u32, clear_color: [f32; 4], )

Render a frame to the given surface texture view.

Live pictures first: the live pass uploads what this window’s textures lack, under each source’s lock, without waiting longer than about one refresh for a producer.

Source

pub fn render_capture( &mut self, frame: &RenderFrame, view: &TextureView, scale_factor: f32, viewport_width: u32, viewport_height: u32, clear_color: [f32; 4], )

render for a screenshot: the frame as the window’s next one will show it. Each live picture shows its latest commit, whatever a producer’s lock or a pause says, and every band of a large frame is written before the draw. It counts as a capture, not as a frame drawn, and tells no producer its frame was displayed.

Source

pub fn live_texture_stats(&self) -> LiveTextureStats

What this renderer holds and did for live pictures.

Source

pub fn live_texture_timings(&self) -> LiveImageTimings

How long the live pass has taken: one render’s pass for a frame that draws a live picture, each hold of a source’s lock, and each upload’s delay from its commit, each over its latest 1,024 samples. In debug builds and with the live-image-timings feature.

Source

pub fn device(&self) -> &Device

Source

pub fn queue(&self) -> &Queue

Source

pub fn register_image( &mut self, name: &str, width: u32, height: u32, pixels: &[u8], )

Register an image for rendering by name.

Source

pub fn remove_image(&mut self, name: &str)

Remove a registered image.

Trait Implementations§

Source§

impl Drop for Renderer

Source§

fn drop(&mut self)

Every texture this renderer holds goes with it: a window closing frees its live textures without waiting for another window’s frame.

Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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

Source§

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

Source§

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