summaryrefslogtreecommitdiffstats
path: root/wgpu/src/lib.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-05-08 13:22:22 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-05-08 13:41:12 +0200
commitbed53f81436c595e479009427e1fa4ff4a1048d3 (patch)
tree1905c66186c1f68513cdd0fdbbd82ec6b67ac8d3 /wgpu/src/lib.rs
parent447f3a2d14ab1c4bc20e232df1aa2375623af2de (diff)
downloadiced-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.rs13
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,