diff --git a/crates/game/src/main.rs b/crates/game/src/main.rs index 8c9d74a..0ba54e3 100644 --- a/crates/game/src/main.rs +++ b/crates/game/src/main.rs @@ -76,14 +76,55 @@ impl WinitState { // .unwrap(); // rendering - self.renderer - .debug_draw_egui(&window_id, &window.egui_platform.context(), output, || { - window.window.pre_present_notify(); - }) - .inspect_err(|err| { - tracing::error!("error encountered while drawing: {err}"); - }) - .expect("drawing"); + + let textures_to_remove = smol::block_on(self.renderer.draw_with_graph( + &window_id, + || window.window.pre_present_notify(), + |renderer, rg| { + use renderer::rendering::{egui_pass, egui_pre_pass}; + let framebuffer = rg.get_framebuffer().unwrap(); + let dev = renderer.vulkan.device.clone(); + + if let Some(font) = self.font.as_ref() { + font.pass(rg, framebuffer)?; + } + + egui_pre_pass( + &dev, + rg, + &mut renderer.texture_handler, + &mut renderer.egui_state, + &output, + )?; + + let textures_to_remove = egui_pass( + &dev, + rg, + &mut renderer.texture_handler, + renderer.vulkan.samplers_mut(), + &mut renderer.egui_state, + &window.egui_platform.context(), + output, + framebuffer, + )?; + + renderer::Result::Ok(textures_to_remove) + }, + )) + .unwrap() + .unwrap(); + + for tid in textures_to_remove { + self.renderer.texture_handler.remove_texture(tid); + } + // self.renderer + // .debug_draw_egui(&window_id, &window.egui_platform.context(), output, || { + // window.window.pre_present_notify(); + // }) + // .inspect_err(|err| { + // tracing::error!("error encountered while drawing: {err}"); + // }) + // .expect("drawing"); window.window.request_redraw(); } }