Reuse Vec
allocations in TextRenderer
This commit is contained in:
parent
c16b6eb957
commit
4f24305ac5
1 changed files with 10 additions and 6 deletions
|
@ -20,6 +20,8 @@ pub struct TextRenderer {
|
||||||
vertices_to_render: u32,
|
vertices_to_render: u32,
|
||||||
pipeline: Arc<RenderPipeline>,
|
pipeline: Arc<RenderPipeline>,
|
||||||
bind_group: wgpu::BindGroup,
|
bind_group: wgpu::BindGroup,
|
||||||
|
glyph_vertices: Vec<GlyphToRender>,
|
||||||
|
glyph_indices: Vec<u32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TextRenderer {
|
impl TextRenderer {
|
||||||
|
@ -82,6 +84,8 @@ impl TextRenderer {
|
||||||
vertices_to_render: 0,
|
vertices_to_render: 0,
|
||||||
pipeline,
|
pipeline,
|
||||||
bind_group,
|
bind_group,
|
||||||
|
glyph_vertices: Vec::new(),
|
||||||
|
glyph_indices: Vec::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,8 +111,8 @@ impl TextRenderer {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut glyph_vertices: Vec<GlyphToRender> = Vec::new();
|
self.glyph_vertices.clear();
|
||||||
let mut glyph_indices: Vec<u32> = Vec::new();
|
self.glyph_indices.clear();
|
||||||
let mut glyphs_added = 0;
|
let mut glyphs_added = 0;
|
||||||
|
|
||||||
for text_area in text_areas {
|
for text_area in text_areas {
|
||||||
|
@ -291,7 +295,7 @@ impl TextRenderer {
|
||||||
|
|
||||||
let depth = metadata_to_depth(glyph.metadata);
|
let depth = metadata_to_depth(glyph.metadata);
|
||||||
|
|
||||||
glyph_vertices.extend(
|
self.glyph_vertices.extend(
|
||||||
iter::repeat(GlyphToRender {
|
iter::repeat(GlyphToRender {
|
||||||
pos: [x, y],
|
pos: [x, y],
|
||||||
dim: [width as u16, height as u16],
|
dim: [width as u16, height as u16],
|
||||||
|
@ -310,7 +314,7 @@ impl TextRenderer {
|
||||||
);
|
);
|
||||||
|
|
||||||
let start = 4 * glyphs_added as u32;
|
let start = 4 * glyphs_added as u32;
|
||||||
glyph_indices.extend([
|
self.glyph_indices.extend([
|
||||||
start,
|
start,
|
||||||
start + 1,
|
start + 1,
|
||||||
start + 2,
|
start + 2,
|
||||||
|
@ -332,7 +336,7 @@ impl TextRenderer {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
let vertices = glyph_vertices.as_slice();
|
let vertices = self.glyph_vertices.as_slice();
|
||||||
let vertices_raw = unsafe {
|
let vertices_raw = unsafe {
|
||||||
slice::from_raw_parts(
|
slice::from_raw_parts(
|
||||||
vertices as *const _ as *const u8,
|
vertices as *const _ as *const u8,
|
||||||
|
@ -356,7 +360,7 @@ impl TextRenderer {
|
||||||
self.vertex_buffer_size = buffer_size;
|
self.vertex_buffer_size = buffer_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
let indices = glyph_indices.as_slice();
|
let indices = self.glyph_indices.as_slice();
|
||||||
let indices_raw = unsafe {
|
let indices_raw = unsafe {
|
||||||
slice::from_raw_parts(
|
slice::from_raw_parts(
|
||||||
indices as *const _ as *const u8,
|
indices as *const _ as *const u8,
|
||||||
|
|
Loading…
Reference in a new issue