feo_oop_engine/graphics/
graphics_system.rs1use std::sync::Arc;
2
3use vulkano::{buffer::CpuAccessibleBuffer, device::Queue, framebuffer::{RenderPassAbstract, Subpass}, pipeline::GraphicsPipelineAbstract};
4
5use crate::components::ScreenPos;
6
7use super::{pass_builder::PassBuilder};
8
9#[derive(Clone)]
11pub struct GraphicsSystem {
12 pub(crate) gfx_queue: Arc<Queue>,
13 pub(crate) vertex_buffer: Arc<CpuAccessibleBuffer<[ScreenPos]>>,
14 pub(crate) pipeline: Arc<dyn GraphicsPipelineAbstract + Send + Sync>,
15}
16
17
18pub trait GraphicsSystemTrait: Send + Sync {
20 fn new_system<L>(gfx_queue: Arc<Queue>, subpass: Subpass<L>) -> GraphicsSystem
22 where Self: Sized, L: RenderPassAbstract + Sync + Send + 'static;
23
24 fn get_system_num(&self) -> usize;
26
27 fn pass<'b, 'p : 'b>(&self, pass_builder: &'b mut PassBuilder<'p>, gfx_system: GraphicsSystem);
29}