use anyhow::Result; use vulkan_rs::prelude::*; use std::sync::{Arc, Mutex}; use super::pipeline::SingleColorPipeline; pub struct Rendering { swapchain: Arc, pipeline: SingleColorPipeline, render_target: RenderTarget, images: Vec>, } impl Rendering { pub fn new( device: Arc, queue: Arc>, swapchain: Arc, ) -> Result { let images = swapchain.wrap_images(&swapchain.vk_images()?, &queue)?; let render_target = RenderTarget::builder() .add_sub_pass( SubPass::builder(swapchain.width(), swapchain.height()) .set_prepared_targets(&images, 0, [0.0, 0.0, 0.0, 1.0], false) .build(&device, &queue)?, ) .build(&device)?; Ok(Self { swapchain, pipeline: SingleColorPipeline::new(device, render_target.render_pass())?, render_target, images, }) } pub fn swapchain(&self) -> &Arc { &self.swapchain } pub fn render(&mut self) -> Result { todo!() } }