From 4f24305ac5d84f09122bebedb80ae711b59acf65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Fri, 29 Mar 2024 23:46:42 +0100 Subject: [PATCH] Reuse `Vec` allocations in `TextRenderer` --- src/text_render.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/text_render.rs b/src/text_render.rs index 81dd5f5..c8a3bef 100644 --- a/src/text_render.rs +++ b/src/text_render.rs @@ -20,6 +20,8 @@ pub struct TextRenderer { vertices_to_render: u32, pipeline: Arc, bind_group: wgpu::BindGroup, + glyph_vertices: Vec, + glyph_indices: Vec, } impl TextRenderer { @@ -82,6 +84,8 @@ impl TextRenderer { vertices_to_render: 0, pipeline, bind_group, + glyph_vertices: Vec::new(), + glyph_indices: Vec::new(), } } @@ -107,8 +111,8 @@ impl TextRenderer { }); } - let mut glyph_vertices: Vec = Vec::new(); - let mut glyph_indices: Vec = Vec::new(); + self.glyph_vertices.clear(); + self.glyph_indices.clear(); let mut glyphs_added = 0; for text_area in text_areas { @@ -291,7 +295,7 @@ impl TextRenderer { let depth = metadata_to_depth(glyph.metadata); - glyph_vertices.extend( + self.glyph_vertices.extend( iter::repeat(GlyphToRender { pos: [x, y], dim: [width as u16, height as u16], @@ -310,7 +314,7 @@ impl TextRenderer { ); let start = 4 * glyphs_added as u32; - glyph_indices.extend([ + self.glyph_indices.extend([ start, start + 1, start + 2, @@ -332,7 +336,7 @@ impl TextRenderer { return Ok(()); } - let vertices = glyph_vertices.as_slice(); + let vertices = self.glyph_vertices.as_slice(); let vertices_raw = unsafe { slice::from_raw_parts( vertices as *const _ as *const u8, @@ -356,7 +360,7 @@ impl TextRenderer { self.vertex_buffer_size = buffer_size; } - let indices = glyph_indices.as_slice(); + let indices = self.glyph_indices.as_slice(); let indices_raw = unsafe { slice::from_raw_parts( indices as *const _ as *const u8,