Improve error handling

This commit is contained in:
Hanno Braun 2024-10-30 02:30:51 +01:00
parent 8e2ec045c3
commit ab4a2f6f40
2 changed files with 9 additions and 9 deletions

View File

@ -32,7 +32,7 @@ impl ApplicationHandler for App {
.unwrap(),
);
let renderer = Renderer::new(window.clone());
let renderer = Renderer::new(window.clone()).unwrap();
self.window = Some(window);
self.renderer = Some(renderer);

View File

@ -1,5 +1,6 @@
use std::sync::Arc;
use anyhow::anyhow;
use winit::window::Window;
pub struct Renderer {
@ -9,31 +10,30 @@ pub struct Renderer {
}
impl Renderer {
pub fn new(window: Arc<Window>) -> Self {
pub fn new(window: Arc<Window>) -> anyhow::Result<Self> {
let instance = wgpu::Instance::default();
let surface = instance.create_surface(window.clone()).unwrap();
let surface = instance.create_surface(window.clone())?;
let adapter = pollster::block_on(instance.request_adapter(
&wgpu::RequestAdapterOptions {
compatible_surface: Some(&surface),
..Default::default()
},
))
.unwrap();
.ok_or_else(|| anyhow!("Failed to request adapter"))?;
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();
.ok_or_else(|| anyhow!("Failed to get default surface config"))?;
surface.configure(&device, &config);
Self {
Ok(Self {
surface,
device,
queue,
}
})
}
}