pub struct Renderer { /* private fields */ }Expand description
GPU renderer that draws a RenderFrame using seven shader pipelines.
Implementations§
Source§impl Renderer
impl Renderer
Sourcepub fn new(device: Device, queue: Queue, surface_format: TextureFormat) -> Self
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.
Sourcepub fn with_device_health(
device: Device,
queue: Queue,
surface_format: TextureFormat,
health: DeviceHealth,
) -> Self
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.
Sourcepub fn upload_atlas(&mut self, width: u32, height: u32, pixels: &[u8])
pub fn upload_atlas(&mut self, width: u32, height: u32, pixels: &[u8])
Upload atlas texture data from the text backend.
Sourcepub fn render(
&mut self,
frame: &RenderFrame,
view: &TextureView,
scale_factor: f32,
viewport_width: u32,
viewport_height: u32,
clear_color: [f32; 4],
)
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.
Sourcepub fn render_capture(
&mut self,
frame: &RenderFrame,
view: &TextureView,
scale_factor: f32,
viewport_width: u32,
viewport_height: u32,
clear_color: [f32; 4],
)
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.
Sourcepub fn live_texture_stats(&self) -> LiveTextureStats
pub fn live_texture_stats(&self) -> LiveTextureStats
What this renderer holds and did for live pictures.
Sourcepub fn live_texture_timings(&self) -> LiveImageTimings
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.
pub fn device(&self) -> &Device
pub fn queue(&self) -> &Queue
Sourcepub fn register_image(
&mut self,
name: &str,
width: u32,
height: u32,
pixels: &[u8],
)
pub fn register_image( &mut self, name: &str, width: u32, height: u32, pixels: &[u8], )
Register an image for rendering by name.
Sourcepub fn remove_image(&mut self, name: &str)
pub fn remove_image(&mut self, name: &str)
Remove a registered image.