From ecee10d87f5f2c8b56647ce2a2790f03880f573c Mon Sep 17 00:00:00 2001 From: Irene Knapp Date: Sat, 8 Aug 2026 05:13:18 -0700 Subject: move models into their own struct and file Force-Push: yes Change-Id: Ic6aa38b7d069825beadeb144eace5a9d23f0d21b --- src/graphics/scene.rs | 51 +++------------------------------------------------ 1 file changed, 3 insertions(+), 48 deletions(-) (limited to 'src/graphics/scene.rs') diff --git a/src/graphics/scene.rs b/src/graphics/scene.rs index b5cf7bd..f1399b2 100644 --- a/src/graphics/scene.rs +++ b/src/graphics/scene.rs @@ -1,11 +1,6 @@ #![deny(unsafe_code)] use crate::error::*; use crate::graphics::render_state::RenderState; -use crate::linear_algebra::{ Vec3, Vec4, Transformation }; -use crate::shader_data::VertexPushBlock; - -use std::f32::consts::{ TAU }; -use std::mem::size_of; use vulkanalia::Device; use vulkanalia::vk::{ self, HasBuilder, DeviceV1_0 }; @@ -65,49 +60,9 @@ pub fn generate_scene_commands<'a>(image_index: usize, time: f32, render_state.pipeline) }; - unsafe { - device.cmd_bind_vertex_buffers(*command_buffer, 0, - &[render_state.vertex_buffer], &[0]) - }; - - unsafe { - device.cmd_bind_index_buffer(*command_buffer, render_state.index_buffer, - 0, vk::IndexType::UINT32) - }; - - unsafe { - device.cmd_bind_descriptor_sets(*command_buffer, - vk::PipelineBindPoint::GRAPHICS, - render_state.pipeline_layout, - 0, - &[*descriptor_set], - &[]) - }; - - let scale = Vec3::new(1.0, 1.0, 1.0); - let model = Transformation { - rotation: Vec4::rotation_quaternion(&Vec3::new(0.0, 1.0, 0.0), time % TAU), - translation: Vec3::new(0.0, 0.0, 0.0), - }; - let push_block = VertexPushBlock:: { scale, model }; - let size = size_of::>(); - let push_block_bytes = unsafe { - std::slice::from_raw_parts(&push_block as *const VertexPushBlock - as *const u8, - size) - }; - - unsafe { - device.cmd_push_constants(*command_buffer, render_state.pipeline_layout, - vk::ShaderStageFlags::VERTEX, - 0, - push_block_bytes) - }; - - unsafe { - device.cmd_draw_indexed(*command_buffer, render_state.index_count as u32, - 1, 0, 0, 0) - }; + if let Some(model) = &render_state.model { + model.render(time, device, render_state, command_buffer, descriptor_set); + } unsafe { device.cmd_end_render_pass(*command_buffer) }; -- cgit 1.4.1