pub struct Frame { /* private fields */ }Expand description
Frame en curso. view() devuelve la textura intermedia (Rgba8Unorm,
STORAGE_BINDING) lista para que vello escriba sobre ella.
Implementations§
Source§impl Frame
impl Frame
Sourcepub fn view(&self) -> &TextureView
pub fn view(&self) -> &TextureView
Examples found in repository?
examples/clear_screen.rs (line 96)
60 fn window_event(
61 &mut self,
62 event_loop: &ActiveEventLoop,
63 _id: WindowId,
64 event: WindowEvent,
65 ) {
66 let Some(state) = self.state.as_mut() else {
67 return;
68 };
69 match event {
70 WindowEvent::CloseRequested => event_loop.exit(),
71 WindowEvent::Resized(size) => {
72 state.surface.resize(size.width, size.height);
73 state.window.request_redraw();
74 }
75 WindowEvent::RedrawRequested => {
76 let frame = match state.surface.acquire() {
77 Ok(f) => f,
78 Err(_) => {
79 let (w, h) = state.surface.size();
80 state.surface.resize(w, h);
81 state.window.request_redraw();
82 return;
83 }
84 };
85 let mut encoder =
86 state
87 .hal
88 .device
89 .create_command_encoder(&wgpu::CommandEncoderDescriptor {
90 label: Some("clear_screen-encoder"),
91 });
92 {
93 let _pass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
94 label: Some("clear_screen-pass"),
95 color_attachments: &[Some(wgpu::RenderPassColorAttachment {
96 view: frame.view(),
97 resolve_target: None,
98 depth_slice: None,
99 ops: wgpu::Operations {
100 load: wgpu::LoadOp::Clear(LEAD_GRAY),
101 store: wgpu::StoreOp::Store,
102 },
103 })],
104 depth_stencil_attachment: None,
105 timestamp_writes: None,
106 occlusion_query_set: None,
107 });
108 }
109 state.hal.queue.submit(std::iter::once(encoder.finish()));
110 state.surface.present(frame, &state.hal);
111
112 self.frames += 1;
113 let elapsed = self.last_report.elapsed();
114 if elapsed.as_secs() >= 1 {
115 let fps = self.frames as f64 / elapsed.as_secs_f64();
116 eprintln!("llimphi · clear_screen — {fps:.1} fps");
117 self.frames = 0;
118 self.last_report = Instant::now();
119 }
120 state.window.request_redraw();
121 }
122 _ => {}
123 }
124 }Sourcepub fn overlay_view(&self) -> &TextureView
pub fn overlay_view(&self) -> &TextureView
Vista de la textura de overlay (mismo tamaño y formato que la intermedia). Sólo se usa en el camino de compositing del overlay.
pub fn size(&self) -> (u32, u32)
Auto Trait Implementations§
impl !RefUnwindSafe for Frame
impl !UnwindSafe for Frame
impl Freeze for Frame
impl Send for Frame
impl Sync for Frame
impl Unpin for Frame
impl UnsafeUnpin for Frame
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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.