diff options
Diffstat (limited to 'wgpu')
-rw-r--r-- | wgpu/src/lib.rs | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 63667ada..2283cf71 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -145,7 +145,19 @@ impl Renderer { self.text_viewport.update(queue, viewport.physical_size()); + let physical_bounds = Rectangle::<f32>::from(Rectangle::with_size( + viewport.physical_size(), + )); + for layer in self.layers.iter_mut() { + if physical_bounds + .intersection(&(layer.bounds * scale_factor)) + .and_then(Rectangle::snap) + .is_none() + { + continue; + } + if !layer.quads.is_empty() { engine.quad_pipeline.prepare( device, @@ -268,16 +280,13 @@ impl Renderer { let scale = Transformation::scale(scale_factor); for layer in self.layers.iter() { - let Some(physical_bounds) = - physical_bounds.intersection(&(layer.bounds * scale)) + let Some(scissor_rect) = physical_bounds + .intersection(&(layer.bounds * scale_factor)) + .and_then(Rectangle::snap) else { continue; }; - let Some(scissor_rect) = physical_bounds.snap() else { - continue; - }; - if !layer.quads.is_empty() { engine.quad_pipeline.render( quad_layer, |