hexga_wgpu 0.0.11-beta.53

wgpu wrapped for hexga
Documentation
use super::*;

#[derive(Debug)]
pub struct GpuSurface<'a>
{
    pub wgpu: wgpu::Surface<'a>,
}
impl<'a> From<wgpu::Surface<'a>> for GpuSurface<'a>
{
    fn from(surface: wgpu::Surface<'a>) -> Self { Self { wgpu: surface } }
}
impl<'a> From<GpuSurface<'a>> for wgpu::Surface<'a>
{
    fn from(surface: GpuSurface<'a>) -> Self { surface.wgpu }
}

#[derive(Debug)]
pub struct GpuConfiguredSurface<'a>
{
    pub wgpu: WgpuConfiguredSurface<'a>,
}
#[derive(Debug)]
pub struct WgpuConfiguredSurface<'a>
{
    pub surface: GpuSurface<'a>,
    pub configuration: wgpu::SurfaceConfiguration,
}

impl<'a> GpuConfiguredSurface<'a>
{
    pub fn from_surface(surface: GpuSurface<'a>, size: Point2) -> Self
    {
        let size = size.max(one());
        let configuration = surface
            .wgpu
            .get_default_config(&Gpu.wgpu.adapter, size.x as _, size.y as _)
            .unwrap();
        surface.wgpu.configure(&Gpu.wgpu.device, &configuration);
        Self {
            wgpu: WgpuConfiguredSurface {
                surface,
                configuration,
            },
        }
    }

    fn size(&self) -> Point2
    {
        point2(
            self.wgpu.configuration.width as _,
            self.wgpu.configuration.height as _,
        )
    }
}
impl<'a> SetSize<int, 2> for GpuConfiguredSurface<'a>
{
    fn set_size(&mut self, size: Vector<int, 2>) -> &mut Self
    {
        let size = size.max(one());
        self.wgpu.configuration.width = size.x as _;
        self.wgpu.configuration.height = size.y as _;
        self.wgpu
            .surface
            .wgpu
            .configure(&Gpu.wgpu.device, &self.wgpu.configuration);
        self
    }
}
impl<'a> GetSize<int, 2> for GpuConfiguredSurface<'a>
{
    fn size(&self) -> Vector<int, 2>
    {
        point2(
            self.wgpu.configuration.width as _,
            self.wgpu.configuration.height as _,
        )
    }
}