feat(texture_atlas): reworked the texture atlas creation

This commit is contained in:
lisk77 2025-11-04 01:27:40 +01:00
parent 676b1dcb18
commit bdf33f2714
5 changed files with 274 additions and 263 deletions

View file

@ -16,4 +16,4 @@ wgpu = { version = "22.0", features = ["glsl", "wgsl", "naga-ir"]}
winit = { version = "0.29", features = ["rwh_05"] }
chrono = "0.4.40"
pollster = "0.3"
image = "0.24"
image = "0.24"

View file

@ -1,12 +1,12 @@
use crate::renderer::Renderer;
use crate::{
camera::CameraManager,
render_context::RenderContext,
render_pass::{universal_clear_execute, universal_load_execute, RenderPass},
renderer::Renderer,
};
use comet_colors::Color;
use comet_ecs::{Component, Render, Render2D, Transform2D};
use comet_log::{debug, error, info};
use comet_log::*;
use comet_resources::{
font::Font, graphic_resource_manager::GraphicResourceManager, texture_atlas::*, Texture, Vertex,
};
@ -541,13 +541,28 @@ impl<'a> Renderer2D<'a> {
}
fn get_glyph_region(&self, glyph: char, font: String) -> &TextureRegion {
let font_atlas = self
.resource_manager
.fonts()
.iter()
.find(|f| f.name() == font)
.unwrap();
font_atlas.get_glyph(glyph).unwrap()
let key = format!("{}::{}", font, glyph);
match self.resource_manager.font_atlas().textures().get(&key) {
Some(region) => region,
None => {
warn!(
"Missing glyph for character '{}' in font '{}', using fallback.",
glyph, font
);
let fallback_key = format!("{}:: ", font);
self.resource_manager
.font_atlas()
.textures()
.get(&fallback_key)
.unwrap_or_else(|| {
panic!(
"No fallback glyph available (space also missing) for font '{}'",
font
)
})
}
}
}
pub fn add_text_to_buffers(