diff options
| author | 2020-06-05 15:05:30 +0200 | |
|---|---|---|
| committer | 2020-06-05 15:05:30 +0200 | |
| commit | fd3801ed38a5adbba11ede16f552cd80c0a8bb58 (patch) | |
| tree | 61b8ad6a0c8fad3103020b7c2e6e2ab05b3e1a9e /examples | |
| parent | 969de1d31ce7c17f297b2b8abffd071caa562646 (diff) | |
| download | iced-fd3801ed38a5adbba11ede16f552cd80c0a8bb58.tar.gz iced-fd3801ed38a5adbba11ede16f552cd80c0a8bb58.tar.bz2 iced-fd3801ed38a5adbba11ede16f552cd80c0a8bb58.zip  | |
Clear frames explicitly in `integration` example
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/integration/src/main.rs | 38 | ||||
| -rw-r--r-- | examples/integration/src/scene.rs | 55 | 
2 files changed, 37 insertions, 56 deletions
diff --git a/examples/integration/src/main.rs b/examples/integration/src/main.rs index 2206d906..db8b4366 100644 --- a/examples/integration/src/main.rs +++ b/examples/integration/src/main.rs @@ -154,37 +154,19 @@ pub fn main() {                      &wgpu::CommandEncoderDescriptor { label: None },                  ); -                // We draw the scene first                  let program = state.program(); -                scene.draw( -                    &mut encoder, -                    &frame.view, -                    program.background_color(), -                ); +                { +                    // We clear the frame +                    let mut render_pass = scene.clear( +                        &frame.view, +                        &mut encoder, +                        program.background_color(), +                    ); -                // If you are using this example and you have no `scene` on your application, -                // you can clear screen by this code. -                /* -                let _ = -                    encoder.begin_render_pass(&wgpu::RenderPassDescriptor { -                        color_attachments: &[ -                            wgpu::RenderPassColorAttachmentDescriptor { -                                attachment: &frame.view, -                                resolve_target: None, -                                load_op: wgpu::LoadOp::Clear, -                                store_op: wgpu::StoreOp::Store, -                                clear_color: wgpu::Color { -                                    r: 1.0, -                                    g: 1.0, -                                    b: 1.0, -                                    a: 1.0, -                                }, -                            }, -                        ], -                        depth_stencil_attachment: None, -                    }); -                */ +                    // Draw the scene +                    scene.draw(&mut render_pass); +                }                  // And then iced on top                  let mouse_interaction = renderer.backend_mut().draw( diff --git a/examples/integration/src/scene.rs b/examples/integration/src/scene.rs index b79a7ff4..6c1a4581 100644 --- a/examples/integration/src/scene.rs +++ b/examples/integration/src/scene.rs @@ -16,38 +16,37 @@ impl Scene {          }      } -    pub fn draw( +    pub fn clear<'a>(          &self, -        encoder: &mut wgpu::CommandEncoder, -        target: &wgpu::TextureView, +        target: &'a wgpu::TextureView, +        encoder: &'a mut wgpu::CommandEncoder,          background_color: Color, -    ) { -        let mut rpass = -            encoder.begin_render_pass(&wgpu::RenderPassDescriptor { -                color_attachments: &[ -                    wgpu::RenderPassColorAttachmentDescriptor { -                        attachment: target, -                        resolve_target: None, -                        load_op: wgpu::LoadOp::Clear, -                        store_op: wgpu::StoreOp::Store, -                        clear_color: { -                            let [r, g, b, a] = background_color.into_linear(); +    ) -> wgpu::RenderPass<'a> { +        encoder.begin_render_pass(&wgpu::RenderPassDescriptor { +            color_attachments: &[wgpu::RenderPassColorAttachmentDescriptor { +                attachment: target, +                resolve_target: None, +                load_op: wgpu::LoadOp::Clear, +                store_op: wgpu::StoreOp::Store, +                clear_color: { +                    let [r, g, b, a] = background_color.into_linear(); -                            wgpu::Color { -                                r: r as f64, -                                g: g as f64, -                                b: b as f64, -                                a: a as f64, -                            } -                        }, -                    }, -                ], -                depth_stencil_attachment: None, -            }); +                    wgpu::Color { +                        r: r as f64, +                        g: g as f64, +                        b: b as f64, +                        a: a as f64, +                    } +                }, +            }], +            depth_stencil_attachment: None, +        }) +    } -        rpass.set_pipeline(&self.pipeline); -        rpass.set_bind_group(0, &self.bind_group, &[]); -        rpass.draw(0..3, 0..1); +    pub fn draw<'a>(&'a self, render_pass: &mut wgpu::RenderPass<'a>) { +        render_pass.set_pipeline(&self.pipeline); +        render_pass.set_bind_group(0, &self.bind_group, &[]); +        render_pass.draw(0..3, 0..1);      }  }  | 
