use memoffset::offset_of; use ash::vk; #[repr(C)] #[derive(Clone, Debug, Copy)] pub struct Particle { pos: [f32; 2], vel: [f32; 4], color: [f32; 4], } impl Particle { } #[repr(C)] #[derive(Clone, Debug, Copy)] pub struct Vertex { pos: [f32; 2], color: [f32; 3], } impl Vertex { pub fn get_binding_description() -> [vk::VertexInputBindingDescription; 1] { [vk::VertexInputBindingDescription { binding: 0, stride: std::mem::size_of::() as u32, input_rate: vk::VertexInputRate::VERTEX, }] } pub fn get_attribute_descriptions() -> [vk::VertexInputAttributeDescription; 2] { [ vk::VertexInputAttributeDescription { binding: 0, location: 0, format: vk::Format::R32G32_SFLOAT, offset: offset_of!(Vertex, pos) as u32, }, vk::VertexInputAttributeDescription { binding: 0, location: 1, format: vk::Format::R32G32B32_SFLOAT, offset: offset_of!(Vertex, color) as u32, }, ] } } pub const TRI_VERT_DATA: [Vertex; 3] = [ Vertex { pos: [0.0, -0.5], color: [1.0, 1.0, 1.0], }, Vertex { pos: [0.5, 0.5], color: [0.0, 1.0, 0.0], }, Vertex { pos: [-0.5, 0.5], color: [0.0, 0.0, 1.0], }, ];