Add Renderer::new

This commit is contained in:
Hanno Braun 2024-10-30 02:26:54 +01:00
parent e6e9eeaabc
commit 8e2ec045c3
2 changed files with 35 additions and 25 deletions

View File

@ -32,31 +32,7 @@ impl ApplicationHandler for App {
.unwrap(),
);
let instance = wgpu::Instance::default();
let surface = instance.create_surface(window.clone()).unwrap();
let adapter = pollster::block_on(instance.request_adapter(
&wgpu::RequestAdapterOptions {
compatible_surface: Some(&surface),
..Default::default()
},
))
.unwrap();
let (device, queue) = pollster::block_on(
adapter.request_device(&wgpu::DeviceDescriptor::default(), None),
)
.unwrap();
let size = window.inner_size();
let config = surface
.get_default_config(&adapter, size.width, size.height)
.unwrap();
surface.configure(&device, &config);
let renderer = Renderer {
surface,
device,
queue,
};
let renderer = Renderer::new(window.clone());
self.window = Some(window);
self.renderer = Some(renderer);

View File

@ -1,5 +1,39 @@
use std::sync::Arc;
use winit::window::Window;
pub struct Renderer {
pub surface: wgpu::Surface<'static>,
pub device: wgpu::Device,
pub queue: wgpu::Queue,
}
impl Renderer {
pub fn new(window: Arc<Window>) -> Self {
let instance = wgpu::Instance::default();
let surface = instance.create_surface(window.clone()).unwrap();
let adapter = pollster::block_on(instance.request_adapter(
&wgpu::RequestAdapterOptions {
compatible_surface: Some(&surface),
..Default::default()
},
))
.unwrap();
let (device, queue) = pollster::block_on(
adapter.request_device(&wgpu::DeviceDescriptor::default(), None),
)
.unwrap();
let size = window.inner_size();
let config = surface
.get_default_config(&adapter, size.width, size.height)
.unwrap();
surface.configure(&device, &config);
Self {
surface,
device,
queue,
}
}
}