From 1e54c5440741d543468aecb049481f4ae47de700 Mon Sep 17 00:00:00 2001 From: mars Date: Mon, 18 Apr 2022 02:21:19 -0600 Subject: [PATCH] Create mesh pass pool + redraw loop --- src/main.rs | 12 +++++++++--- src/pass/mesh.rs | 16 +++++++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 01a66f7..8ed7e99 100644 --- a/src/main.rs +++ b/src/main.rs @@ -41,12 +41,18 @@ fn main() { let window = WindowBuilder::new().build(&event_loop).unwrap(); let mut renderer = pollster::block_on(make_window_renderer(&window)); - let mesh_pass = pass::mesh::MeshPass::new(); + let device = renderer.get_device(); + let mesh_pass = pass::mesh::MeshPass::new(device.to_owned()); renderer.add_pass(mesh_pass); - renderer.render(); - event_loop.run(move |event, _, control_flow| match event { + Event::RedrawRequested(_) => { + renderer.render(); + } + Event::MainEventsCleared => { + std::thread::sleep(std::time::Duration::from_secs_f32( 1.0 / 60.0 )); + window.request_redraw(); + } Event::WindowEvent { ref event, window_id, diff --git a/src/pass/mesh.rs b/src/pass/mesh.rs index 85038df..c5d9b34 100644 --- a/src/pass/mesh.rs +++ b/src/pass/mesh.rs @@ -1,12 +1,22 @@ use super::*; +use crate::mesh::*; pub struct FrameData {} -pub struct MeshPass {} +pub struct MeshPass { + attr_store: Arc, + mesh_pool: Arc, +} impl MeshPass { - pub fn new() -> Self { - Self {} + pub fn new(device: Arc) -> Self { + let attr_store = AttrStore::new(); + let mesh_pool = MeshPool::new(device, attr_store.to_owned()); + + Self { + attr_store, + mesh_pool, + } } }