diff options
author | 2020-02-09 03:25:13 +0100 | |
---|---|---|
committer | 2020-02-09 03:25:13 +0100 | |
commit | f1e20a61f16388ed4d2dac734bab30d67bbd84b3 (patch) | |
tree | e4112411df1b0493ecb34aa75ecd04e92e9a82af /wgpu/src/renderer | |
parent | 95880ca74bddb6a23774621ef766b91956d40a61 (diff) | |
download | iced-f1e20a61f16388ed4d2dac734bab30d67bbd84b3.tar.gz iced-f1e20a61f16388ed4d2dac734bab30d67bbd84b3.tar.bz2 iced-f1e20a61f16388ed4d2dac734bab30d67bbd84b3.zip |
Allow `iced_wgpu` to render to any `TextureView`
Diffstat (limited to 'wgpu/src/renderer')
-rw-r--r-- | wgpu/src/renderer/target.rs | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/wgpu/src/renderer/target.rs b/wgpu/src/renderer/target.rs deleted file mode 100644 index 20974976..00000000 --- a/wgpu/src/renderer/target.rs +++ /dev/null @@ -1,91 +0,0 @@ -use crate::{Renderer, Transformation}; -use iced_native::window; - -use raw_window_handle::HasRawWindowHandle; - -/// A rendering target. -#[derive(Debug)] -pub struct Target { - surface: wgpu::Surface, - width: u32, - height: u32, - scale_factor: f32, - transformation: Transformation, - swap_chain: wgpu::SwapChain, -} - -impl Target { - pub(crate) fn dimensions(&self) -> (u32, u32) { - (self.width, self.height) - } - - pub(crate) fn scale_factor(&self) -> f32 { - self.scale_factor - } - - pub(crate) fn transformation(&self) -> Transformation { - self.transformation - } - - pub(crate) fn next_frame(&mut self) -> wgpu::SwapChainOutput<'_> { - self.swap_chain.get_next_texture() - } -} - -impl window::Target for Target { - type Renderer = Renderer; - - fn new<W: HasRawWindowHandle>( - window: &W, - width: u32, - height: u32, - scale_factor: f64, - renderer: &Renderer, - ) -> Target { - let surface = wgpu::Surface::create(window); - let swap_chain = - new_swap_chain(&surface, width, height, &renderer.device); - - Target { - surface, - width, - height, - scale_factor: scale_factor as f32, - transformation: Transformation::orthographic(width, height), - swap_chain, - } - } - - fn resize( - &mut self, - width: u32, - height: u32, - scale_factor: f64, - renderer: &Renderer, - ) { - self.width = width; - self.height = height; - self.scale_factor = scale_factor as f32; - self.transformation = Transformation::orthographic(width, height); - self.swap_chain = - new_swap_chain(&self.surface, width, height, &renderer.device); - } -} - -fn new_swap_chain( - surface: &wgpu::Surface, - width: u32, - height: u32, - device: &wgpu::Device, -) -> wgpu::SwapChain { - device.create_swap_chain( - &surface, - &wgpu::SwapChainDescriptor { - usage: wgpu::TextureUsage::OUTPUT_ATTACHMENT, - format: wgpu::TextureFormat::Bgra8UnormSrgb, - width, - height, - present_mode: wgpu::PresentMode::Vsync, - }, - ) -} |