moves vertex and index buffer handling to scene

This commit is contained in:
zomseffen 2024-05-18 12:22:00 +02:00
parent 0b3be29525
commit 32577d548b
6 changed files with 111 additions and 79 deletions

View file

@ -44,6 +44,7 @@ pub mod image;
pub mod command_buffer;
pub mod depth_buffer;
pub mod load_model;
pub mod scene;
const PORTABILITY_MACOS_VERSION: Version = Version::new(1, 3, 216);
const VALIDATION_ENABLED: bool =
@ -150,6 +151,7 @@ struct App {
last_pos: LogicalPosition<f32>,
view_direction: vertex::Vec3,
cur_pos: cgmath::Point3<f32>,
scene_handler: scene::Scene,
}
impl App {
@ -158,43 +160,9 @@ impl App {
let loader = LibloadingLoader::new(LIBRARY)?;
let entry = Entry::new(loader).map_err(|b| anyhow!("{}", b))?;
let mut data = app_data::AppData::default();
let mut scene_handler = scene::Scene::default();
//load_model::load_model(&mut data)?;
data.vertices.push(
vertex::Vertex::new(vec3(8.0, 0.0, 0.0), vec3(1.0, 0.0, 0.0), vec2(0.0, 0.0))
);
data.indices.push(0);
data.vertices.push(
vertex::Vertex::new(vec3(-8.0, 0.0, 0.0), vec3(0.0, 0.0, 1.0), vec2(0.0, 0.0))
);
data.indices.push(1);
data.vertices.push(
vertex::Vertex::new(vec3(0.0, 8.0, 0.0), vec3(1.0, 1.0, 0.0), vec2(0.0, 0.0))
);
data.indices.push(2);
data.vertices.push(
vertex::Vertex::new(vec3(0.0, -8.0, 0.0), vec3(0.0, 1.0, 1.0), vec2(0.0, 0.0))
);
data.indices.push(3);
let grid_size = 1000;
for x_index in -grid_size..grid_size {
for y_index in -grid_size..grid_size {
if !(((x_index as i32).abs() == 8 && y_index == 0) || (x_index == 0 && (y_index as i32).abs() == 8)){
let index = data.indices.len();
let vert = vertex::Vertex::new(
vec3(x_index as f32, y_index as f32, 0.0),
vec3(0.0, 1.0, 0.0),
vec2(0.0, 0.0)
);
data.vertices.push(vert);
data.indices.push(index as u32);
}
}
}
let instance = create_instance(window, &entry, &mut data)?;
data.surface = vk_window::create_surface(&instance, &window, &window)?;
@ -218,14 +186,13 @@ impl App {
image::create_texture_image_view(&device, &mut data)?;
image::create_texture_sampler(&device, &mut data)?;
buffer::create_vertex_buffer(&instance, &device, &mut data)?;
buffer::create_index_buffer(&instance, &device, &mut data)?;
scene_handler.prepare_data(&instance, &device, &data);
buffer::create_uniform_buffers(&instance, &device, &mut data)?;
buffer::create_descriptor_pool(&device, &mut data)?;
buffer::create_descriptor_sets(&device, &mut data)?;
command_buffer::create_command_buffers(&device, &mut data)?;
command_buffer::create_command_buffers(&device, &mut data, &scene_handler)?;
create_sync_objects(&device, &mut data)?;
@ -234,6 +201,7 @@ impl App {
last_pos: LogicalPosition::new(-1 as f32, -1 as f32),
view_direction: vertex::Vec3::new(0.0, 0.0, 0.0),
cur_pos: cgmath::point3(0.0, 0.0, 0.0),
scene_handler,
})
}
@ -316,11 +284,7 @@ impl App {
self.device.destroy_descriptor_set_layout(self.data.descriptor_set_layout, None);
self.device.destroy_buffer(self.data.index_buffer, None);
self.device.free_memory(self.data.index_buffer_memory, None);
self.device.destroy_buffer(self.data.vertex_buffer, None);
self.device.free_memory(self.data.vertex_buffer_memory, None);
self.scene_handler.destroy(&self.device);
self.data.in_flight_fences
.iter()
@ -355,7 +319,7 @@ impl App {
create_framebuffers(&self.device, &mut self.data)?;
buffer::create_uniform_buffers(&self.instance, &self.device, &mut self.data)?;
buffer::create_descriptor_sets(&self.device, &mut self.data)?;
command_buffer::create_command_buffers(&self.device, &mut self.data)?;
command_buffer::create_command_buffers(&self.device, &mut self.data, &self.scene_handler)?;
self.data
.images_in_flight
.resize(self.data.swapchain_images.len(), vk::Fence::null());