4sides quad

This commit is contained in:
zomseffen 2024-12-16 20:01:39 +01:00
parent 534f1a109a
commit 7fe7015774
13 changed files with 784 additions and 52 deletions
src/primitives

55
src/primitives/quad.rs Normal file
View file

@ -0,0 +1,55 @@
use vulkanalia::prelude::v1_0::*;
use cgmath::vec3;
use crate::vertex;
use crate::scene::Scene;
use crate::primitives::drawable::Drawable;
#[derive(Clone, Debug, PartialEq)]
pub struct Quad{
pub pos1: vertex::Vec3,
pub pos2: vertex::Vec3,
pub pos3: vertex::Vec3,
pub pos4: vertex::Vec3,
pub raster_pos: cgmath::Vector2<u32>,
pub volume_index: u32,
}
impl Drawable for Quad {
fn draw(& self, topology: &vk::PrimitiveTopology, start_index: usize, scene: &mut Scene) {
if *topology == vk::PrimitiveTopology::TRIANGLE_LIST {
// 0 top left far
scene.rt_vertices.push(vertex::RTVertex::new(
vec3(self.pos1.x as f32, self.pos1.y as f32, self.pos1.z as f32),
self.raster_pos,
self.volume_index
));
// 1 top right far
scene.rt_vertices.push(vertex::RTVertex::new(
vec3(self.pos2.x as f32, self.pos2.y as f32, self.pos2.z as f32),
self.raster_pos,
self.volume_index
));
// 2 top left near
scene.rt_vertices.push(vertex::RTVertex::new(
vec3(self.pos3.x as f32, self.pos3.y as f32, self.pos3.z as f32),
self.raster_pos,
self.volume_index
));
// 3 top right near
scene.rt_vertices.push(vertex::RTVertex::new(
vec3(self.pos4.x as f32, self.pos4.y as f32, self.pos4.z as f32),
self.raster_pos,
self.volume_index
));
// top
scene.indices_rt.push(start_index as u32 + 2);
scene.indices_rt.push(start_index as u32 + 1);
scene.indices_rt.push(start_index as u32 + 0);
scene.indices_rt.push(start_index as u32 + 0);
scene.indices_rt.push(start_index as u32 + 3);
scene.indices_rt.push(start_index as u32 + 2);
}
}
}