diff options
author | 2024-05-08 13:22:22 +0200 | |
---|---|---|
committer | 2024-05-08 13:41:12 +0200 | |
commit | bed53f81436c595e479009427e1fa4ff4a1048d3 (patch) | |
tree | 1905c66186c1f68513cdd0fdbbd82ec6b67ac8d3 /wgpu/src/lib.rs | |
parent | 447f3a2d14ab1c4bc20e232df1aa2375623af2de (diff) | |
download | iced-bed53f81436c595e479009427e1fa4ff4a1048d3.tar.gz iced-bed53f81436c595e479009427e1fa4ff4a1048d3.tar.bz2 iced-bed53f81436c595e479009427e1fa4ff4a1048d3.zip |
Reuse `glyphon::Viewport` explicitly
Diffstat (limited to 'wgpu/src/lib.rs')
-rw-r--r-- | wgpu/src/lib.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/wgpu/src/lib.rs b/wgpu/src/lib.rs index 1fbdbe9a..ad88ce3e 100644 --- a/wgpu/src/lib.rs +++ b/wgpu/src/lib.rs @@ -79,6 +79,7 @@ pub struct Renderer { triangle_storage: triangle::Storage, text_storage: text::Storage, + text_viewport: text::Viewport, // TODO: Centralize all the image feature handling #[cfg(any(feature = "svg", feature = "image"))] @@ -87,8 +88,8 @@ pub struct Renderer { impl Renderer { pub fn new( - _device: &wgpu::Device, - _engine: &Engine, + device: &wgpu::Device, + engine: &Engine, default_font: Font, default_text_size: Pixels, ) -> Self { @@ -99,10 +100,11 @@ impl Renderer { triangle_storage: triangle::Storage::new(), text_storage: text::Storage::new(), + text_viewport: engine.text_pipeline.create_viewport(device), #[cfg(any(feature = "svg", feature = "image"))] image_cache: std::cell::RefCell::new( - _engine.create_image_cache(_device), + engine.create_image_cache(device), ), } } @@ -141,6 +143,8 @@ impl Renderer { ) { let scale_factor = viewport.scale_factor() as f32; + self.text_viewport.update(queue, viewport.physical_size()); + for layer in self.layers.iter_mut() { if !layer.quads.is_empty() { engine.quad_pipeline.prepare( @@ -182,12 +186,12 @@ impl Renderer { engine.text_pipeline.prepare( device, queue, + &self.text_viewport, encoder, &mut self.text_storage, &layer.text, layer.bounds, Transformation::scale(scale_factor), - viewport.physical_size(), ); } @@ -357,6 +361,7 @@ impl Renderer { if !layer.text.is_empty() { text_layer += engine.text_pipeline.render( + &self.text_viewport, &self.text_storage, text_layer, &layer.text, |