use crate::canvas::canvas_state::{CanvasTextureHandle, CanvasImageHandle}; use vulkano::image::{ImmutableImage, AttachmentImage}; use std::sync::Arc; use vulkano::format::{Format, R8Unorm}; use vulkano::sampler::Sampler; use vulkano::descriptor::DescriptorSet; use vulkano::descriptor::descriptor_set::PersistentDescriptorSet; use vulkano::buffer::CpuAccessibleBuffer; use vulkano::pipeline::GraphicsPipelineAbstract; use crate::canvas::canvas_text::CanvasFontHandle; #[derive(Clone)] pub struct CanvasTexture { pub(crate) handle: Arc, pub(crate) buffer: Arc>, pub(crate) name: String, pub(crate) size: (u32, u32), } impl CanvasTexture { pub fn get_descriptor_set(&self, pipeline: Arc, sampler: Arc) -> Box { let o: Box = Box::new( PersistentDescriptorSet::start( pipeline.clone(), 0, ) .add_sampled_image(self.buffer.clone(), sampler.clone()).unwrap() .build().unwrap()); o } } #[derive(Clone)] pub struct CanvasImage { pub(crate) handle: Arc, pub(crate) buffer: Arc, pub(crate) size: (u32, u32), } impl CanvasImage { pub fn get_descriptor_set(&self, pipeline: Arc) -> Box { let o: Box = Box::new( PersistentDescriptorSet::start( pipeline.clone(), 0, ) .add_image(self.buffer.clone()).unwrap() .build().unwrap()); o } }