diff --git a/src/game/mod.rs b/src/game/mod.rs index 125e218..f284bc3 100644 --- a/src/game/mod.rs +++ b/src/game/mod.rs @@ -25,6 +25,7 @@ pub struct Camera { impl Game { pub fn main_loop(mut self) -> Game { + println!("Starting main loop"); let mut event_pump = self .state .sdl_context diff --git a/src/main.rs b/src/main.rs index 41cc3d9..a6e0f90 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,14 +7,13 @@ mod render; use ash::Device; use ash::Entry; use ash::Instance; -use ash::khr::surface; use ash::vk; use game::Camera; use render::SwapchainCtx; use render::loading_world::Component; use render::loading_world::WorldComponent; use render::skybox::Skybox; -use sdl2::Sdl; +use sdl2::{Sdl, video::Window as SdlWindow}; use std::collections::HashMap; @@ -32,7 +31,6 @@ pub struct RenderCtx { pdev: vk::PhysicalDevice, dev: Device, surface: vk::SurfaceKHR, - surface_loader: surface::Instance, queue: vk::Queue, queue_idx: u32, cmd_buf: vk::CommandBuffer, @@ -43,6 +41,7 @@ pub struct RenderCtx { pub struct Window { width: u32, height: u32, + _sdl: SdlWindow, } pub struct RenderAvailable { diff --git a/src/render/cube.rs b/src/render/cube.rs index 937a534..563577a 100644 --- a/src/render/cube.rs +++ b/src/render/cube.rs @@ -277,11 +277,11 @@ impl Game { fn load_cube_shaders(ctx: &RenderCtx) -> (vk::ShaderModule, vk::ShaderModule) { let shader_vert_shader = ctx.shader_mod_from_file( - "shaders/shader_vert.spv", + "shaders/cube_vert.spv", vk::ShaderModuleCreateFlags::empty(), ); let shader_frag_shader = ctx.shader_mod_from_file( - "shaders/shader_rag.spv", + "shaders/cube_frag.spv", vk::ShaderModuleCreateFlags::empty(), ); diff --git a/src/render/in_world.rs b/src/render/in_world.rs index 02ce576..5e5a0bd 100644 --- a/src/render/in_world.rs +++ b/src/render/in_world.rs @@ -110,7 +110,7 @@ impl Game { state: InWorld { sdl_context, - window: Window { width, height }, + window: Window { width, height, .. }, ctx: RenderCtx { dev, cmd_buf, .. }, skybox, components, diff --git a/src/render/init.rs b/src/render/init.rs index 34efea4..42094a0 100644 --- a/src/render/init.rs +++ b/src/render/init.rs @@ -2,7 +2,6 @@ use std::ffi::{CStr, CString}; use ash::{ Device, Entry, Instance, - khr::surface, vk::{self}, }; use raw_window_handle::{HasDisplayHandle as _, HasWindowHandle as _}; @@ -43,19 +42,20 @@ impl Game { let host_invis_idx = find_host_invisible(&instance, &pdev).expect("No host invisible memory found"); - let surface_loader = surface::Instance::new(&entry, &instance); - Game { state: RenderAvailable { sdl_context, - window: crate::Window { width, height }, + window: crate::Window { + width, + height, + _sdl: window, + }, ctx: RenderCtx { entry, instance, pdev, dev, surface, - surface_loader, queue, queue_idx, cmd_buf, diff --git a/src/render/loading_world.rs b/src/render/loading_world.rs index 8d04ff6..5ae25eb 100644 --- a/src/render/loading_world.rs +++ b/src/render/loading_world.rs @@ -137,6 +137,7 @@ impl Game { } pub fn start_world(self) -> Game { + println!("Starting world"); let Self { state: LoadingWorld { @@ -153,7 +154,8 @@ impl Game { components, }, } = self; - let desc_pool = setup_desc_pool(&ctx, requested_descriptors); + + let desc_pool = setup_desc_pool(&ctx, requested_descriptors, (components.len() + 1) as u32); let mut desc_sets = make_desc_sets( &ctx, @@ -187,6 +189,8 @@ impl Game { let sem_finish = ctx.make_sem(); let fence_flight = ctx.make_fence(); + println!("Starting world"); + Game { state: InWorld { sdl_context, @@ -284,6 +288,7 @@ fn setup_render_pass(ctx: &RenderCtx) -> vk::RenderPass { fn setup_desc_pool( ctx: &RenderCtx, requested_descriptors: HashMap, + num_sets: u32, ) -> vk::DescriptorPool { let pool_sizes = requested_descriptors .into_iter() @@ -295,7 +300,7 @@ fn setup_desc_pool( .collect::>(); let pool_info = vk::DescriptorPoolCreateInfo::default() - .max_sets(1) + .max_sets(num_sets) .pool_sizes(&pool_sizes); let pool = unsafe { ctx.dev diff --git a/src/render/skybox.rs b/src/render/skybox.rs index 0dddfd9..4bfa721 100644 --- a/src/render/skybox.rs +++ b/src/render/skybox.rs @@ -198,7 +198,7 @@ fn load_skybox_shaders(ctx: &RenderCtx) -> (vk::ShaderModule, vk::ShaderModule) vk::ShaderModuleCreateFlags::empty(), ); let skybox_frag_shader = ctx.shader_mod_from_file( - "shaders/skybox_rag.spv", + "shaders/skybox_frag.spv", vk::ShaderModuleCreateFlags::empty(), );